-1

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

int* a;

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

int* a;

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

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

4

2 回答 2

0

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

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

于 2013-11-14T20:38:17.377 回答
0

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

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

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

于 2013-11-14T20:25:51.537 回答