如何在C 中初始化物件陣列
在C 中,初始化物件陣列可能看起來很簡單,但是有一些複雜的地方考慮。考慮以下結構和類別定義:
struct Foo { Foo(int x) { /* ... */ } }; struct Bar { Foo foo; Bar() : foo(4) {} // Valid initialization }; struct Baz { Foo foo[3]; // Incorrect initialization Baz() : foo[0](4), foo[1](5), foo[2](6) {} };
使用 foo(4) 初始化 Bar 是有效的,因為它呼叫 Foo 的建構子來初始化 foo 成員。但是,嘗試以提供的方式初始化 Baz 是不正確的。
正確的數組初始化
與 Bar 不同,Bar 中只有一個 Foo 類型的對象,Baz 包含三個相同類型的對象。要正確初始化 Baz 中的物件數組,必須採用以下方法:
Baz() { foo[0] = Foo(4); foo[1] = Foo(5); foo[2] = Foo(6); }
這明確呼叫數組中每個物件的建構子。
嵌入式的解決方法處理器
在沒有像std::vector 這樣的標準庫構造的情況下,另一種方法是使用預設建構子以及明確初始化方法 ,例如init(),讓您將初始化推遲到構造之後:
Baz() {} void Baz::init() { foo[0] = Foo(4); foo[1] = Foo(5); foo[2] = Foo(6); }
以上是如何在 C 中正確初始化物件數組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!