c++的一个小问题:将类的一个对象赋值给该类的另一个对象时,为什么不调用拷贝构造函数?

如题所述

这里的区别还是比较细节的,需要仔细理解
如果是创建和赋值在一个语句,那么调用的是构造函数,例如:
A a1;
A a2 = a1;//调用拷贝构造,如果没有实现,那么默认按内存拷贝
其实这等同于A a2(a1);
如果不是这种情况,比如:
A a3;
a3 = a1;//调用重载的=操作符,如果没有实现,也是按内存拷贝。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-12-01
构造函数只有在创建对象的时候用于初始化
如果说定义的同时赋值就会调用构造
普通的赋值只会调用赋值重载operator=
因为这个时候对象已经存在了,不需要再构造本回答被网友采纳
第2个回答  2020-01-01
这个是由于语言的规则约束所产生的,赋值等号运算符的重载,就是帮助我们将一个对象赋值给另一个对象,这种情况下,另外一个对象已经存在,而拷贝的时候,另外一个对象还没有生成本回答被提问者采纳
相似回答