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对象赋值。