甲隱含默認構造具有空體和一個空初始化列表(原始類型未定義,默認構造函數被調用用戶定義的類型)。C++隱式默認構造函數的要點是什麼?
這post說
MyClass *c = new MyClass();
確實做了件明智的值初始化,但這樣做
MyClass c;
時是什麼調用默認的構造函數的意義呢?
調用隱式默認構造函數以確保調用用戶定義類型(可能有不平凡的默認構造函數)的默認構造函數嗎?
更新
似乎編譯器生成的隱式默認構造函數被調用後,該對象可能無法始終如一地實例化,即原始類型未定義,和用戶定義的類型可能(或可能不)取決於程序員是否提供了默認的構造函數。
那麼爲什麼編譯器生成,當所謂的可能實例化一個對象處於未知狀態,一個隱含的默認構造函數?
代碼在編譯時創建。 C++是一種非常靜態的語言。 –
您知道第一個版本會在您停止使用該變量後創建內存泄漏,除非您使用'delete c;'? –
您的示例演示了堆分配與堆棧分配,並且與構造函數的默認或隱含無關。我認爲你不明白默認的構造函數是什麼,隱含的默認構造函數是什麼意思。你首先需要弄清楚。請參閱:[cppreference - 默認構造函數](http://en.cppreference.com/w/cpp/language/default_constructor)只是爲了確保我們在相同的波長 – Drop