2013-11-14 97 views
-1

我想复制一个对象到另一个对象。但我的第一个对象有一个属性指向同一个对象内的另一个变量。例如:复制其中的指针对象到另一个对象

int* a;

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

int* a;

我原来的目标点

完全一样地址作为我复制的对象的int* a;,当我不希望它这样做时。

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

+1

你必须为此编写代码。复制指针不会改变它。 –

+1

使用复制构造函数,但请确保遵循[三规则](https://en.wikipedia.org/wiki/Rule_of_three_%28C%2B%2B_programming%29) – clcto

+0

您可能想要检查深层复制。 –

回答

0

您应该为此创建一个拷贝构造函数。 基本复印操作将复制到曲面中。 (成员明智的副本)

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

你应该在构造函数的指针分配空间。

0

在这种情况下,您需要编写一个赋值操作符和一个拷贝构造函数。我会告诉你一个更完整的文章,其中描述了两者。如有必要,您还可以在网上搜索更多示例。 http://www.cplusplus.com/articles/y8hv0pDG/

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

相关问题