我有一个包含 boost::shared_array 成员的类。其他成员不是动态的——只是一堆整数,没有指针。我希望这样一个类的默认复制构造函数会很好。
这是我的假设:
假设我有这个类的一个实例,orig。
orig的 shared_array 成员的引用计数为 1。
现在我创建一个 orig 的副本:
复制=原件;
我现在希望copy和orig都有指向相同底层内存的 shared_arrays,每个引用计数为 2。
以上是正确的吗?
当有 boost::shared_* 成员时,我被各种警告默认复制构造函数的人吓坏了——但我永远找不到解释为什么默认值会/可能是坏的。例如,这里有人说应该定义明确的副本/分配,但没有解释原因:
https://stackoverflow.com/a/716112/629530
有人可以澄清何时需要为包含 boost::shared_* (shared_array 和 shared_ptr) 成员的类定义复制构造函数和赋值运算符吗?