[英]Relationship between assignment operator and user-defined constructor
#include <iostream>
class A{
};
class B: public A{
public:
B(A&& inA){
std::cout<<"constructor"<<std::endl;
}
};
int main(){
B whatever{A{}};
whatever=A{};
}
这个输出
constructor
constructor
至少使用C ++ 14标准和GCC。 如何定义赋值运算符可以导致调用构造函数而不是operator=
? 赋值运算符的此属性是否有名称?
由于您满足生成移动分配运算符的所有条件 。 编译器为您合成的移动分配运算符的形式为:
B& operator=(B&&) = default;
回想一下,可以将临时变量绑定到const
左值引用和右值引用 。 通过隐式转换序列 ,您的临时A{}
被转换为临时B
,用于进行移动分配。 您可以使用explicit
构造函数禁用此功能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.