C++问题大家解决一下

a是类E的对象,执行Eb=a:则要调用类E中()
A:缺省构造函数
B:operator=()函数
C:拷贝构造函数
D:对象之间的赋值

C,用一个对象去初始化另一个对象时会调用拷贝构造函数

这道题答案C。

什么时候调用拷贝构造,什么时候调用赋值运算符?
看下面2个例子

E a; // a是E类对象
E b = a; // 调用拷贝构造

E c;
c = a; // 调用赋值运算符(operator=)

两个赋值语句有什么区别?
区别在于第一个例子(E b = a;),赋值的时候,b对象还不存在,先要构造,因此调用拷贝构造,用a对象构造b对象。
第二个例子(c = a;),赋值的时候,c对象已经存在了,不需要再构造,因此调用赋值运算符,用a对象来对c对象赋值。