C++ 默認構造函數具有以下特點:
- 當類中沒有定義任何構造函數時,編譯器會自動生成一個默認構造函數。
- 默認構造函數沒有參數,即它的參數列表為空。
- 默認構造函數會初始化類成員變量為它們的默認值。對于內置數據類型(如 int、float、double 等),默認值為 0 或 0.0;對于指針和引用,默認值為 nullptr 或 null 引用;對于類類型,默認值為該類型的默認構造值。
- 如果類中有常量成員變量,那么編譯器生成的默認構造函數不會初始化這些常量成員變量。這是因為常量成員變量必須在構造函數的初始化列表中顯式初始化。
- 如果類中有引用成員變量,那么編譯器生成的默認構造函數會初始化這個引用成員變量為它所引用的對象的默認構造值。但是,如果這個引用成員變量沒有被初始化,那么它會導致編譯錯誤。
- 如果類中有自定義的構造函數,那么編譯器不會生成默認構造函數。這是因為自定義的構造函數已經提供了對象的初始化方式,編譯器不再自動生成默認構造函數。
- 默認構造函數可以被顯式調用,以便在創建對象時執行特定的初始化操作。
- 如果類中定義了其他構造函數,編譯器不會自動生成默認構造函數,除非顯式地定義一個不帶參數的構造函數。
總之,C++ 默認構造函數是一種特殊的構造函數,它在類中沒有定義任何構造函數時自動生成,用于初始化類成員變量為它們的默認值。