【发布时间】:2013-11-27 17:23:09
【问题描述】:
我只是在一条导致数据丢失的简单线路上浪费了几个小时。我有另一个类持有 MyClass 实例的向量。这个 AnotherClass 通过以下方式实例化 MyClass 的对象:
AnotherClass::AnotherClass(){
MyClass myObject(...);
myVector.push_back(&myObject);
}
myObject 的地址随后被推入一个向量(与 MyClass 的其他实例一起),就像在代码中写的那样。当我开始使用 AnotherClass 的实例时,我注意到 MyClass 的值丢失了(完全随机)。当我将代码更改为:
AnotherClass::AnotherClass(){
MyClass* myObject = new MyClass(...);
myVector.push_back(myObject);
}
我没有数据丢失。
谁能解释一下为什么第二种创建对象的方法不会导致数据丢失? (没有参考我 1.000 页的书)
【问题讨论】:
-
存储指针而不是对象有什么特别的原因吗?如果没有,那就不要。
-
“我有 AnotherClass 持有 MyClass 实例的向量。” -- 不,你没有。或者如果你这样做了,它与这段代码无关,所以我不知道你为什么提到它。
标签: c++ object pointers instance instantiation