什么是C++中set object = null的替代方案,如C#

hbr*_*rls 1 c++ null object

我有一个类似的功能:

MyClass1 mc1, mc0; //Single Object
MyClass2 mc2; //vector of MyClass1

mc1.Init(1);
mc2.Add(mc1);
mc1 = mc0;

mc1.Init(2);
mc2.Add(mc1);
mc1 = mc0;
//so on......
Run Code Online (Sandbox Code Playgroud)

我实际上想要mc1 = null在步骤开始之前设置但不能在C++中这样做.所以我保持一个从未初始化mc0的做法.不要以为这是一个优雅的解决方案.我的背景主要是关于C#和ASP.NET的管理.(我认为unmanagedC++ 的属性是我不能做object = null的原因.对吧?)

Aas*_*set 7

这与语言是否被管理无关,而是与C++的对象引用的不同方法无关.在C#中,声明MyClass mc;会产生一个可能引用 a MyClass或be 的变量null.在C++中,MyClass mc;生成一个变量,它一个MyClass- 对象实例完全包含在变量中,因此,变量不能null.如果你想要一个引用,你通常会使用一个指针:MyClass * mc = NULL;MyClass * mc = new MyClass();.