因爲我對這個問題的疑慮(對於C++ 03)我張貼它只是這兒過得閱讀轉換構造,並指出拷貝構造函數和一個轉換構造之間的困惑
「要是一個轉換構造函數,構造函數必須具有單個 參數,並且在沒有顯式關鍵字的情況下聲明。「
現在我的問題是複製構造函數是否可以被稱爲轉換構造函數提供它沒有明確聲明?它有資格成爲一個嗎? 我相信它不能被稱爲轉換構造函數,因爲它只接受相同的類型參數ths導致沒有轉換。例如
foo a;
foo b;
a = 100; //a Conversion constructor would be called (i.e) foo(int a){...}
a = b ; //Since both objects are same type and have been initialized the assignment operator will be called (if there is an overloaded version otherwise the default will be called)
我的理解是否正確?
如果可能,'operator =()'將是首選,但真正的問題是「當找不到合適的'operator =()'實現時會發生什麼?」 – cdhowie
foo a = 100; //是轉換結構 foo b = a; //是複製構造 –
[class.conv.ctor]/3「非顯式拷貝構造函數(12.8)是一個轉換構造函數,隱式聲明的拷貝構造函數 不是一個顯式的構造函數;它可以被隱式調用類型轉換「。 – dyp