我想知道C++/CLI的用途是什么.在我看来,它基本上是在.Net上运行的C++,我在这个想法中错了吗?到底有什么好处呢?为什么不使用C#或其他一些真正的托管语言呢?
Jar*_*Par 11
以下是C++/CLI相对于简单C++或C#的一些优点
Aar*_*ght 10
C++/CLI有一些C#没有的有趣内容:
强烈拳击.如果框中int到object在C#中,你失去对原始类型是什么样的任何信息.不是C++/CLI中的情况.
析构函数和终结符之间的区别.在C#中,您必须手动实现IDisposable并记住调用Dispose.在C++/CLI中,您只需将清理代码放入析构函数中(它会自动编译成Dispose方法),并将仅托管清理代码放入终结器中.
变量的堆栈和堆语义之间的区别.Stack是默认的,并且堆栈分配的引用类型将自动被销毁(处理) - 您不必记住delete它们,只是让它们超出范围.总而言之,在C++/CLI中处理非托管资源比使用任何其他.NET语言要容易得多.
函数指针.现在这与C#中的匿名委托和lambda语法没什么区别,但早在2005年,这是一个大问题.
访问CLR中实现的所有访问修饰符.您可以为同一个程序集和外部程序集明确指定public,protected或private .所有你在C#中有(较明显等public,protected,private)是internal和protected internal改性剂,前者意为"公共的内部,外部私有",后者意为"大众内部,外部的保护".在C++中,您可以创建一个类"protected AND internal",这意味着该成员只能在同一个程序集中的派生类中访问.
价值类.很奇怪,但可能对某人有用!
还有的这一切和更多更详细的解释在这里.总而言之,其他托管语言--C#,VB.NET,F#等 - 实际上并不能让您完全访问CLR可以执行的所有操作,更像是其中的90%.C++/CLI允许您在CLR规范中执行您想要的任何操作.
| 归档时间: |
|
| 查看次数: |
2222 次 |
| 最近记录: |