我只是在一条简单的线上浪费了数小时,导致数据丢失 我有AnotherClass持有MyClass实例的向量.这个AnotherClass通过以下方式实例化MyClass的对象:
AnotherClass::AnotherClass(){
MyClass myObject(...);
myVector.push_back(&myObject);
}
Run Code Online (Sandbox Code Playgroud)
之后,myObject的地址被推送到一个向量(与MyClass的其他实例一起),就像在代码中编写的一样.当我开始使用AnotherClass的实例时,我注意到MyClass的值丢失了(完全随机).当我将代码更改为:
AnotherClass::AnotherClass(){
MyClass* myObject = new MyClass(...);
myVector.push_back(myObject);
}
Run Code Online (Sandbox Code Playgroud)
我没有数据丢失.
有人可以这么好解释为什么第二种创建对象的方法不会导致数据丢失吗?(没有引用我的1.000页的书籍)