建構函式中的成員陣列初始化
考慮下列C 類別:
class C { public: C() : arr({1, 2, 3}) {} // C() : arr{1, 2, 3} {} private: int arr[3]; };
程式碼嘗試初始化函數的成員初始值設定項清單中的陣列成員。但是,它無法編譯。
問題:
答案:
1.建構函式中的陣列初始化
是的,可以在建構函式的成員初始值設定項清單中初始化陣列。但是,它需要一個中間結構:
struct A { int foo[3]; A(int a, int b, int c) : foo{a, b, c} {} }; class C { public: C() : foo(A(1, 2, 3)) {} private: A foo; };
2。 C 03 標準
C 03 標準並未明確解決成員初始值設定項清單中陣列的初始化。但是,直接初始化的一般規則禁止使用大括號初始化陣列。
3. C 11 列表初始化
C 11引入了列表初始化,它允許使用大括號直接初始化數組:
class C { public: C() : arr{1, 2, 3} {} private: int arr[3]; };
在這種情況下,直接在數組名稱後面使用大括號的語法有效並在構造函數的成員初始值設定在項目列表中初始化數組。
以上是數組可以在建構函式的成員初始化列表中初始化嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!