我最近发现,当我在一个类中有指针时,我需要指定一个 Copy 构造函数。
为了了解这一点,我编写了以下简单的代码。它可以编译,但在执行复制构造函数时会出现运行时错误。
我试图从复制对象的指针中复制值,但避免分配相同的地址。
那么,这里有什么问题?
class TRY{
public:
TRY();
~TRY();
TRY(TRY const &);
int *pointer;
void setPointer(int);
};
void TRY::setPointer(int a){
*pointer = a;
return;
}
TRY::TRY(){}
TRY::~TRY(){}
TRY::TRY(TRY const & copyTRY){
int a = *copyTRY.pointer;
*pointer = a;
}
int main(){
TRY a;
a.setPointer(5);
TRY b = a;
b.setPointer(8);
cout << "Address of object a = " << &a << endl;
cout << "Address of object b = " << &b << endl;
cout << "Address of a.pointer = " << a.pointer << endl;
cout << "Address of b.pointer = " << b.pointer << endl;
cout << "Value in a.pointer = " << *a.pointer << endl;
cout << "Value in b.pointer = " << *b.pointer << endl;
return 0;
}
我将把这个概念用于其他有很多指针的类,我需要将所有值从一个对象复制到另一个。此代码最初需要复制,因此我想保留复制的可能性(我不会将复制构造函数隐藏为私有)。
此外,我需要实现的真正类有 10 个指针,而且它可能会随着时间而变化。在 C++ 中有没有更聪明的方法来拥有一个深拷贝构造函数?...