【发布时间】:2016-09-07 20:49:07
【问题描述】:
使用复制构造函数初始化对象有两种类型:
Class object2(val1, val2); // <--- (1)
同样可以通过复制另一个类的内容来完成:
Class object1(val1, val2);
Class object2 = object1; // <--- (2)
(1)和(2)有什么区别? 它们是显式调用和隐式调用还是与运算符重载有关?
【问题讨论】:
-
(1) 是显式构造,而不是复制构造。 (2)是复制分配。复制构造将是
Class object2( object1 );如果您不重载复制赋值运算符,它将使用复制构造函数初始化目标对象。 -
1 ==> 类构造函数; 2 ==> 复制构造函数;
-
这意味着正在调用第二个复制构造函数。所以 = 运算符没有重载?
-
@paddy 2 永远不会调用复制赋值运算符。
标签: c++ class object constructor copy-constructor