我是 C++ 的新手,我想知道重建/重新初始化对象的最佳方法是什么?我的最小代码如下所示:
typedef boost::shared_ptr<Object> PObject;
int main()
{
PObject SomeObject;
SomeObject = PObject(new Object);
// some code
*SomeObject = Object();
}
我觉得这不是正确的做法。有人能告诉我最好的方法吗?我只想知道如何重建/重新初始化一个对象。谢谢!
最佳答案
当使用 shared_ptr
时,您可以为此使用 reset
方法:
SomeObject.reset(new Object);
或者,异常安全的替代方案(您也应该将其用于初始化):
SomeObject = make_shared<Object>();
这两个语句都使 shared_ptr
指向新创建的 Object
。引用同一对象的其他 shared_ptr
不会受到影响。如果此 shared_ptr
是唯一指向旧对象的对象,它将被销毁。
举例说明:
shared_ptr<int> foo = make_shared<int>(23);
shared_ptr<int> bar = foo;
std::cout << *foo << ", " << *bar << std::endl; // prints "23, 23"
*foo = 42;
std::cout << *foo << ", " << *bar << std::endl; // prints "42, 42"
bar = make_shared<int>(23);
std::cout << *foo << ", " << *bar << std::endl; // prints "42, 23"
关于c++ - 通过智能指针重置对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8579897/