我有一个包含boost :: shared_array成员的类。其他成员不是动态的 - 只是一堆整数,没有指针。我期望这样的类的默认拷贝构造函数可以。boost :: shared_ *具有复制构造函数和赋值运算符
这是我的假设:
- 比方说,我有这个类的一个实例,原稿。
- 原稿的shared_array构件具有1
参考计数现在我创建原稿的副本:
副本=原稿;
我现在都期盼副本和原稿有指向同一内存shared_arrays,各有2
引用计数就是上面是否正确?
当有一个boost :: shared_ *成员的时候,我被许多人对默认的拷贝构造函数提出警告 - 但我永远无法找到解释为什么默认会/可能会变糟的解释。例如,这里的人谁说一个明确的复制/分配应定义的注释,但没有解释原因:一类中定义
当一个拷贝构造函数和赋值操作符需要https://stackoverflow.com/a/716112/629530
有人能澄清包含boost :: shared_ *(shared_array和shared_ptr)成员?
从技术上讲,默认的拷贝构造函数是正确的。但是,它只创建浅拷贝而不是深拷贝。但大多数人都期望副本很深,即与原始对象无关。 – nosid 2013-04-09 20:30:54
谢谢nosid。为了澄清,你是否说我从我给出的例子中得到的理解是正确的?无论如何,我鼓励你在回复中补充一点,因为如果有帮助,我会提高你的答案。 – firebush 2013-04-10 15:57:04