C++托管扩展
Managed C++ 的重大改变
以下列出面向对象程序设计与 unmanaged C++ 之间的差异性。
(Global change) Existing C++ to be ported over the CLR must be appended with the following:
一个新的前置处理引导(preprocessor directive)
这是必须的。此外 #using directives 必须用 namespace 的方法来 import 更多的库(libraries),像是 Base Class Library,例如:
以及
来使用 Windows Forms。
To compile code to target the CLR, a new compiler option must be introduced.
/clr enables any code referencing the .NET Framework to be compiled as CIL。
A class can be designated to be garbage collected via the __gc extension keyword.
比较 Managed C++
以下列出 Managed C++ 与其它编程语言在类似观念上的差异。
...to Java
缺点
Java 几乎可支持所有的平台,而 Managed C++ 仅可以在 Windows 或其它实现出 .NET Framework 的平台上运行。
Java 代码复杂度较小,且易于阅读,并提供有代码使用文件可供参考。而 Managed C++ 则无。 (C++/CLI 于 Visual C++ .NET 2005 中已有支持)
Java 有许多开发工具与解决方案可提供开发者利用,Managed C++ 仅能使用 Visual Studio .NET。不过, Managed C++ applications 可用免费的 Visual C++ Toolkit 2003 编译。
Java 的例外机制是可以检查的(checked), Managed C++ 则无法检查。 (根据程序不同这也可能是个优点)
优点
Managed C++ 可以直接与系统低级(low level)服务接口沟通,Java 程序员必须使用 JNI (Java Native Interface) 与系统低级服务沟通。 (仅限Windows)
Managed C++ 是无法检查例外,Java 可以检查。. (根据程序不同这也可能是个缺点)
...to C#
缺点
一如 Java, C# 的复杂度较小。而且 C# 可以直接支持 .NET Framework 。
C# 支持指针(pointers),如同 C++,这个机制默认是关掉的。
免责声明:以上内容版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。感谢每一位辛勤著写的作者,感谢每一位的分享。
- 有价值
- 一般般
- 没价值