和拷贝构造函数的实现不一样
拷贝构造函数首先是一个构造函数,它调用的时候产生一个对象,是通过参数传进来的那个对象来初始化,产生的对象。
operator=();是把一个对象赋值给一个原有的对象,所以如果原来的对象中有内存分配要先把内存释放掉,而且还要检查一下两个对象是不是同一个对象,如果是的话就不做任何操作。
还要注意的是拷贝构造函数是构造函数,不返回值
而赋值函数需要返回一个对象自身的引用,以便赋值之后的操作
你肯定知道这个:
int a, b;
b = 7;
Func( a = b ); // 把i赋值后传给函数Func( int )
同理:
CMyClass obj1, obj2;
obj1.Initialize();
Func2( obj1 = obj2 ); //如果没有返回引用,是不能把值传给Func2的
注:
CMyClass & CMyClass:: operator = ( CMyClass & other )
{
if( this == &other )
return *this;
// 赋值操作...
return *this
}
复制构造函数,拷贝构造函数
最新推荐文章于 2022-12-21 18:24:28 发布