首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

如其赋值构造函数没有返回引用的话

2012-11-15 
如果赋值构造函数没有返回引用的话譬如这个类class T{public:T(){}T(T t1){}T operator(const T& t1){ret

如果赋值构造函数没有返回引用的话
譬如这个类
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=();是把一个对象赋值给一个原有的对象,所以如果原来的对象中有内存分配要先把内存释放掉,而且还要检查一下两个对象是不是同一个对象,如果是的话就不做任何操作。

热点排行
Bad Request.