[英]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.