gal*_*tte 5 c++ shared-ptr unions
我正在实现一个“变体”类,它必须具有尽可能小的内存占用,并使用共享指针机制存储一些对象。
为此,我想在所有变量类型的类中进行联合。这包括一些 shared_ptr。
operator= 和复制构造函数必须更改变体的数据类型,因此切换到联合中的另一个成员。切换到 shared_ptr 后,应将此指针重置为 null,而不删除/取消指针。有没有办法做到这一点?
当然,还有其他方法可以实现这一点,但在我的情况下,它们通常更复杂、更不安全或消耗更多内存。不过欢迎提出任何建议。
谢谢!
重置为 null 是不够的;我知道的实现
std::shared_ptr也有一个指向引用计数的指针,它也必须被删除。
您需要跟踪当前联合中的内容,并在类型更改时(以及在构造函数和析构函数中)使用对析构函数的显式调用和放置 new 进行构造。
| 归档时间: |
|
| 查看次数: |
1822 次 |
| 最近记录: |