我最近发现,当我有一个类内的指针,我需要指定一个复制构造函数。复制构造函数与指针
为了解这一点,我做了以下简单的代码。它编译,但执行复制构造函数时给我运行时错误。
我想复制只是复制对象的指针的值,但避免分配相同的地址。
那么,这里有什么问题?
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++?深拷贝构造函数...
不要忘记在为它分配新对象之前先删除m_p。 – xtofl 2009-04-23 14:18:39
我没有定义赋值操作符,它只是一个拷贝构造函数。因此不需要删除m_p。 – Naveen 2009-04-23 14:21:32