首頁  >  文章  >  後端開發  >  如何在 C 中正確初始化物件數組?

如何在 C 中正確初始化物件數組?

Linda Hamilton
Linda Hamilton原創
2024-11-07 01:53:02311瀏覽

How to Properly Initialize Arrays of Objects in C  ?

如何在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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn