無參數構造函數。若用戶未定義任何構造函數,編譯器生成默認構造函數(不初始化成員)。若定義了任何構造函數,編譯器不再生成默認構造函數。
~ClassName(),無參數,無返回類型,不可重載。Test t[2] = {10, 20}; // 調用 2 次帶參構造
Test* p = new Test(5); // 分配內存 + 構造
delete p; // 析構 + 釋放內存
Test* arr = new Test[3]; // 3 次默認構造
delete[] arr; // 3 次析構 + 釋放內存
可顯式調用 obj.~Test(),但對象生命週期結束時系統會再調用一次,導致雙重析構。若析構中有 delete 會出錯。一般不顯式調用,STL 內部有特殊用法(如 placement new 後)。
全局對象的構造函數在 main() 之前執行,析構在 main() 之後。