Const-Felder in Konstruktoren initialisieren
Stellen Sie sich das Szenario vor, in dem eine Bar der Klasse C einen Foo-Zeiger benötigt und beabsichtigt, ihn während seines gesamten Lebenszyklus unveränderlich zu halten . Wie sollte dies implementiert werden?
Anfangs mag es einfach erscheinen, das const-Feld im Konstruktor zu initialisieren, wie unten gezeigt:
<code class="cpp">class Foo; class Bar { public: Foo * const foo; Bar(Foo* foo) { this->foo = foo; } }; class Foo { public: int a; };</code>
Dieser Ansatz schlägt jedoch beim Kompilieren fehl. Die Lösung liegt in der Verwendung einer Initialisierungsliste:
<code class="cpp">Bar(Foo* _foo) : foo(_foo) { }</code>
Beachten Sie, dass die eingehende Variable umbenannt wurde, um Namenskonflikte zu vermeiden. Diese Initialisierungsliste initialisiert das const-Feld ganz am Anfang des Konstruktors und stellt so seine Unveränderlichkeit sicher.
Das obige ist der detaillierte Inhalt vonWie initialisiere ich „const'-Felder in C-Konstruktoren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!