c++ - 当我们将指针从一个对象复制到同一类的另一个对象时,我们到底想要什么?

标签 c++ pointers copy-constructor

<分区>

所以我正在阅读有关复制控制和三原则的内容,似乎他们给出的关于为什么需要它们的主要示例是将指针用作类成员时。它表示,如果将指针从一个对象复制到另一个对象,那么该类的多个对象将指向同一内存。为什么这样不好?难道我们不希望我们指向的对象指向同一件事吗?在类之间复制指针时到底应该发生什么?我不确定在使用复制构造函数处理指针时我们应该做什么..

最佳答案

如果您有任何动态内容,您需要编写一个复制构造函数,以避免浅(按成员)复制。

如果不同的指针指向同一个对象,为什么会出现问题?因为这样一来,如果您更改拷贝,就会更改原件

例如,如果您有两个指向同一个对象的指针,然后使用第一个指针删除该对象——该对象将会消失;第二个指针不会为空,而是一个悬空指针,其先前的值现在无效。

关于c++ - 当我们将指针从一个对象复制到同一类的另一个对象时,我们到底想要什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20024572/

相关文章:

c++ - Copy Constructor C++编译错误

c++ - 为什么编译器在调用 move 后选择复制 ctor

c++ - 类函数的多定义错误

c - 为什么第二个printf打印0

c++ - C/C++ : Pointer Arithmetic

c - 将指针传递给函数指针

c++ - 按值返回时复制构造函数的奇怪行为

c++ - 无法将 std::packaged_task 移动到 lambda 中

c++ - 将 char 转换为 std::string,然后连接

c++ - 我们可以使用 lambda 创建 unique_ptr 吗?