【发布时间】:2013-02-12 10:53:11
【问题描述】:
我有一些方法可以引用给定的对象,还有一些方法使用boost::shared_ptr。到目前为止,在我的测试方法中,我创建了一个指向这些对象之一的shared_ptr,并将*ptr 传递给期望引用的方法。是否可以反过来做,例如在堆栈上创建一个本地对象,然后以安全的方式创建一个指向它的共享指针,以直接替代使用传统指针的&obj 运算符?
【问题讨论】:
-
请记住,这些方法可能希望指针在返回后仍保持活动状态。如果没有,他们应该改用
T&。 -
只要没有任何东西复制或存储该指针,并且在您的函数退出后没有任何内容引用该对象。如果有人期待一个指针而不是一个引用,这可能是有原因的 - 确保您传递此指针的任何函数都不会期望该对象在您的函数退出后仍然存在。
-
@MSalters,这是一个测试方法,所以一旦这个方法完成,一切都会被清理干净。不过你有一个有效的观点!
标签: c++ boost shared-ptr