使用默認構造函數參數調用構造函數時,不會構造任何對象。複製和基本構造函數不初始化C++
class cl{
private:
public:
cl(){cout << "Default used" << endl;};
cl(const cl & cl_object) {cout << "Copy used" << endl;};
cl & operator=(const cl & cl_object){cout << "Assignment used" << endl; return *this;};
};
當我寫:獲取顯示
cl(cl());
沒有消息。
問題: 1)爲什麼沒有構建對象? 2)爲什麼不使用複製構造函數?
@NathanOliver你能解釋這是如何重複的嗎? – Nameless
就像回答說的那樣,'cl(cl());'聲明一個函數。既然它是一個函數而不是變量,你不會看到任何構造函數調用,因爲你不需要構造任何東西。 – NathanOliver
@NathanOliver所以,如果我正確理解使用cl();只構造一個對象,但使用cl(cl());聲明一個函數。但是,如果它聲明瞭一個函數,那麼編譯器不會輸出錯誤,因爲我沒有指定返回類型? – Nameless