在 C++ 中,類名后面跟著大括號 {}
和小括號 ()
有不同的含義和作用。
-
大括號
{}
:- 初始化對象:當在聲明類對象時使用大括號
{}
時,這表示對對象進行初始化。這種方式也稱為列表初始化或者統一初始化。 - 示例:
MyClass obj{}; // 使用大括號初始化 MyClass 類的對象 obj
- 初始化方式:大括號初始化有不同的行為,對于類來說可能會觸發不同的構造函數,包括默認構造函數、帶參數的構造函數或者其他初始化方式,取決于類的構造函數重載情況。
- 初始化對象:當在聲明類對象時使用大括號
-
小括號
()
:- 創建對象:在 C++ 中,類名后跟小括號是創建一個對象的方式,表示調用類的構造函數來生成一個新的對象。
- 示例:
MyClass obj(); // 使用小括號創建 MyClass 類的對象 obj
- 注意事項:這里需要小心,因為在這種情況下,編譯器會將
obj
視為一個函數原型而不是一個對象的聲明,這種情況通常被稱為 “most vexing parse”。為了避免這種歧義,可以使用=
或直接省略括號來初始化對象:MyClass obj{}; // 使用大括號進行初始化 MyClass obj; // 或者直接省略括號
總體而言,大括號 {}
用于對象初始化,而小括號 ()
在某些情況下可能導致代碼的二義性,因此在創建對象時,建議使用大括號進行初始化或直接省略括號。