如果赋值构造函数没有返回引用的话
譬如这个类
class T{
public:
T(){}
T(T t1){}
T operator=(const T& t1){return *this;}
}
int main()
{
T t1;
T t2;
t1 = t2;
}
为什么会出现先调用赋值构造函数,然后又调用了拷贝构造函数,求大神解释呀
[解决办法]
也就是说你首先执行了一次 赋值操作,返回了一个临时变量,这个临时变量要传给t1 所以需要拷贝构造!OK?求分
[解决办法]
拷贝构造函数首先是一个构造函数,它调用的时候产生一个对象,是通过参数传进来的那个对象来初始化,产生的对象。
operator=();是把一个对象赋值给一个原有的对象,所以如果原来的对象中有内存分配要先把内存释放掉,而且还要检查一下两个对象是不是同一个对象,如果是的话就不做任何操作。