C++ 默認構造函數會在以下幾種情況下被調用:
MyClass obj; // 調用默認構造函數
MyClass arr[5]; // 調用默認構造函數五次,分別初始化arr中的每個元素
std::vector<MyClass> vec; // 調用默認構造函數,創建一個空的MyClass類型的向量
vec.push_back(MyClass()); // 調用默認構造函數,創建一個新的MyClass對象并添加到向量中
MyClass obj{/* no arguments */}; // 調用默認構造函數
class MyClass {
public:
MyClass() : MyClass(0) {} // 調用另一個構造函數,這里調用了帶有一個int參數的構造函數
MyClass(int x) { /* ... */ }
};
需要注意的是,如果類中定義了其他構造函數(非默認構造函數),編譯器將不再提供默認構造函數。在這種情況下,必須顯式地調用其他構造函數以初始化對象。