将带有指针的对象复制到另一个对象

时间:2013-11-14 20:17:09

标签: c++ object pointers copy

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

int* a;

我想要做的是制作该对象的副本,但通过我的调试器,我可以清楚地看到

int* a;

当我不想要它时,我的原始对象的

指向与我复制的对象的int* a;完全相同的地址。

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

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

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

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