c ++ c#equivaltent对象实例

时间:2017-04-20 22:19:01

标签: c# c++ pointers reference

C#

MyClass myClass = new MyClass(); 

C ++

MyClass* myClass = new MyClass();

C#代码内部是否与C ++代码相同?在C#内部的myClass代码是指示对象还是指针?

2 个答案:

答案 0 :(得分:2)

表达此C#代码意图的更准确方法

var myClass = new MyClass(); 
C ++中的

可能是

auto myClass = std::make_shared<MyClass>();

(或许std::shared_ptr<MyClass> myClass(new MyClass());)。

当然,C#使用的东西完全不同于std::shared_ptr(垃圾收集),但程序员看到的内容基本相同 - 至少对于这个非常简单的例子。

您的原始C ++代码会造成内存泄漏,这在C#中很容易发生。

答案 1 :(得分:1)

它们不是完全等效,因为C#对象由垃圾收集器(MSDN)跟踪。要在C ++中获得类似的功能,您需要使用shared_ptr

然而,从使用的角度来看,相同的概念适用。通过引用所做的更改将传播到其他引用“&#34; point&#34;对同一个对象等。