联合中的std :: shared_ptr

时间:2014-04-03 08:51:49

标签: c++ shared-ptr unions

我正在实施"变种"必须具有尽可能小的内存占用的类,并使用共享指针机制存储一些对象。

为此,我想在所有变量类的类中建立一个联合。这包括一些shared_ptr&#39。

operator =和copy构造函数必须更改变量的数据类型,因此切换到union中的另一个成员。在切换到shared_ptr时,应该将此值重置为null而不删除/删除指针。有没有办法做到这一点?

当然,还有其他方法可以实现这一点,但在我的情况下,它们通常更复杂,安全性更低或内存消耗更多。欢迎任何建议。

谢谢!

1 个答案:

答案 0 :(得分:3)

重置为null并不足够;的实现 std::shared_ptr我知道也有一个指向引用的指针 count,也必须删除。

您需要跟踪当前联盟中的内容,以及 使用对析构函数的显式调用和new的放置 任何时候类型改变(和构造函数中的构造) 和析构者)。