我正在尝试将一个对象复制到另一个对象。但是我的第一个对象有一个属性指向同一个对象内的另一个变量。例子:
int* a;
我想做的是复制那个对象但是通过我的调试器我可以清楚地看到
int* a;
int* a;
当我不希望它这样做时,我的原始对象的地址与我复制的对象的地址完全相同。
我希望它指向它自己在内存中的位置,而不是改变原始对象。
在这种情况下,您需要编写赋值运算符和复制构造函数。我将向您指出一篇更完整的文章,其中描述了两者。如有必要,您还可以在网上搜索更多示例。 http://www.cplusplus.com/articles/y8hv0pDG/
如果你有一个符合 C++ 11 的编译器,那么如果我是你,我也会考虑使用智能指针。
为此,您应该创建一个复制构造函数。基本复制操作将在表面复制。(成员明智的副本)
YourClass::YourClass(const YourClass& p) {
x = p.x;
y = p.y;
*a = *(p.a);
}
您应该在构造函数中为指针分配空间。