<分区>
考虑以下语句:-
Class A a = b;//Where is b is existing object of class A.
A 类同时重载了复制构造函数和赋值运算符(已实现)。那么在这种情况下,上面的语句、复制构造函数或赋值运算符或两者都会被调用?
标签 c++
<分区>
考虑以下语句:-
Class A a = b;//Where is b is existing object of class A.
A 类同时重载了复制构造函数和赋值运算符(已实现)。那么在这种情况下,上面的语句、复制构造函数或赋值运算符或两者都会被调用?
最佳答案
这被称为 Copy initialization 强>。
复制初始化定义为:
T t2 = t1;
取决于 t1
的类型可能有两种情况:
If
t1
is NOT of the typeT
:
t1
输入 T
通过使用隐式转换序列和 t2
通过调用复制构造函数。If
t1
is of the typeT
:
t1
进入t2
通过调用复制构造函数。请注意,通过 copy elision 复制构造函数调用可能被省略 强>。
这里不涉及赋值。仅当您将已构造的对象分配给另一个对象时才会发生分配。您的代码语句在一条语句中涉及构造和赋值,因此本身没有赋值。
关于c++ - 复制构造函数或赋值运算符或两者,这里调用哪个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15493471/