我想知道是否有一种方法可以实现复制构造函数和赋值运算符,以便在为类重新定义它们时只需要进行少量修改。
例如,考虑这样一个类:
class Foo {
private:
int* mInt_ptr;
/* many other member variables
of different types that aren't
pointers */
public:
Foo();
Foo(const Foo&);
Foo& operator=(const Foo&);
~Foo();
};
现在,为了处理指针,mInt_ptr
我需要在复制构造函数和赋值运算符中适当地处理它。但是,其余的成员变量可以安全地进行浅拷贝。有没有办法自动做到这一点?
一旦一个类变大,显式写出复制非指针成员变量的操作可能会变得乏味和笨拙,所以我想知道是否有一种方法可以编写一个复制构造函数,例如:
Foo::Foo(const Foo& tocopy)
{
mInt_ptr = new int(*tocopy.mInt_ptr);
/* Do shallow copy here somehow? */
}
而不是以下的显式形式:
Foo::Foo(const Foo& tocopy)
{
mInt_ptr = new int(*tocopy.mInt_ptr);
mVar1 = tocopy.mVar1;
mVar2 = tocopy.mVar2;
...
...
mVarN = tocopy.mVarN;
}