【问题标题】:Copying an object with pointers in it to another object将带有指针的对象复制到另一个对象
【发布时间】:2013-11-28 01:05:39
【问题描述】:

我正在尝试将一个对象复制到另一个对象。但是我的第一个对象有一个属性指向同一个对象内的另一个变量。示例:

int* a;

我想做的是复制那个对象,但是通过我的调试器我可以清楚地看到

int* a;

当我不希望它这样做时,我的原始对象指向与复制对象的int* a; 完全相同的地址。

我希望它指向它自己在内存中的位置,而不是改变原始对象。

【问题讨论】:

  • 你必须为此编写代码。复制指针不会改变它。
  • 使用复制构造函数,但请确保遵循The Rule of Three
  • 您可能需要检查深拷贝。
  • 你应该显示一些代码来澄清你的意思,否则人们将不得不猜测。

标签: c++ object pointers copy


【解决方案1】:

在这种情况下,您需要编写一个赋值运算符和一个复制构造函数。我将向您指出一篇更完整的文章,其中描述了两者。如有必要,您还可以在网上搜索更多示例。 http://www.cplusplus.com/articles/y8hv0pDG/

如果你有一个兼容 C++ 11 的编译器,那么如果我是你,我也会考虑使用智能指针。

【讨论】:

    【解决方案2】:

    您应该为此创建一个复制构造函数。 基本复制操作将在表面复制。 (成员明智的副本)

    YourClass::YourClass(const YourClass& p) {
        x = p.x;
        y = p.y;
        *a = *(p.a);
    }
    

    您应该在构造函数中为指针分配空间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-07
      • 2016-04-04
      • 1970-01-01
      • 1970-01-01
      • 2015-04-04
      • 1970-01-01
      • 2022-12-04
      • 2021-06-19
      相关资源
      最近更新 更多