Heim > Backend-Entwicklung > C++ > Wie initialisiert man Arrays von Objekten in C richtig?

Wie initialisiert man Arrays von Objekten in C richtig?

Linda Hamilton
Freigeben: 2024-11-07 01:53:02
Original
374 Leute haben es durchsucht

How to Properly Initialize Arrays of Objects in C  ?

So initialisieren Sie Arrays von Objekten in C

In C mag das Initialisieren eines Arrays von Objekten einfach erscheinen, es gibt jedoch einige Feinheiten halten. Betrachten Sie die folgenden Struktur- und Klassendefinitionen:

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) {}
};
Nach dem Login kopieren

Die Initialisierung von Bar mit foo(4) ist gültig, da sie den Konstruktor von Foo aufruft, um das foo-Mitglied zu initialisieren. Der Versuch, Baz auf die bereitgestellte Weise zu initialisieren, ist jedoch falsch.

Korrekte Array-Initialisierung

Im Gegensatz zu Bar, wo es ein einzelnes Objekt vom Typ Foo gibt, enthält Baz drei Objekte des gleichen Typs. Um das Array von Objekten in Baz ordnungsgemäß zu initialisieren, muss der folgende Ansatz gewählt werden:

Baz() {
  foo[0] = Foo(4);
  foo[1] = Foo(5);
  foo[2] = Foo(6);
}
Nach dem Login kopieren

Dadurch wird der Konstruktor für jedes Objekt im Array explizit aufgerufen.

Workaround für Embedded Prozessoren

In Ermangelung von Standardbibliothekskonstrukten wie std::vector besteht ein alternativer Ansatz darin, einen Standardkonstruktor zusammen mit einer expliziten Initialisierungsmethode zu verwenden , wie zum Beispiel init(), sodass Sie die Initialisierung bis nach der Erstellung verschieben können:

Baz() {}

void Baz::init() {
  foo[0] = Foo(4);
  foo[1] = Foo(5);
  foo[2] = Foo(6);
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie initialisiert man Arrays von Objekten in C richtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage