如何在成員初始化器清單中初始化陣列成員
簡介
初始化成員值設定項目清單中的陣列成員看起來像是一項簡單的任務,但在實踐中可能很困難。本文將探討不同的方法並回答與此主題相關的常見問題。
問題與程式碼
以下程式碼片段嘗試在建構函式的初始值設定項中初始化陣列成員list:
class C { public: C() : arr({1,2,3}) //doesn't compile {} private: int arr[3]; };
但是,程式碼無法編譯。原因是陣列只能使用賦值運算子=來初始化,如:
int arr[3] = {1,3,4};
解
一種解決方案是使用結構體來封裝數組,允許它在構造函數中初始化。這本質上就是 Boost.Array 函式庫的作用。
C 11 引入了列表初始化,可用於初始化成員初始值設定項列表中的數組。以下程式碼可以運作:
class C { public: C() : arr{1, 2, 3} { } private: int arr[3]; };
C 03
C 03 標準沒有專門解決構造函數初始值設定項中聚合(包括陣列)的初始化。原始程式碼的無效性是直接初始化規則的結果,該規則禁止對陣列使用初始化器清單。
C 11
C 11 的列表初始化語法簡化了成員初始化列表中數組的初始化。但是,使用正確的語法很重要,如上所示。
以上是如何初始化成員初始化清單中的陣列成員?的詳細內容。更多資訊請關注PHP中文網其他相關文章!