【发布时间】:2014-05-12 00:21:17
【问题描述】:
我正在尝试复制自定义类 Event 的对象。我有一个指向我从其分配中获得的对象的共享指针:
std::shared_ptr<Event> e = std::make_shared<Event>();
为了获得e 的真实副本(不仅仅是指针的副本),我尝试过:
std::shared_ptr<Event> o = std::make_shared<Event>(*e);
但我不确定这是否是正确的方法,因为如果我删除 e 它似乎也会删除 o...
顺便说一句,我还没有定义复制构造函数Event::Event(const Event &orig),但据我了解,这不是必需的,因为编译器提供了默认的复制构造函数。事件类只包含变量,没有进一步的指针。
【问题讨论】:
-
好像
e也删了o?为何如此?您可以使用 print 语句添加析构函数以查看发生了什么。 -
您可以将日志放入您的事件析构函数中。例如 std::cout。
标签: c++ shared-ptr copy-constructor