簡體   English   中英

賦值運算符和用戶定義的構造函數之間的關系

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM