C#
MyClass myClass = new MyClass();
C ++
MyClass* myClass = new MyClass();
C#代码内部是否与C ++代码相同?在C#内部的myClass代码是指示对象还是指针?
答案 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;对同一个对象等。