Heim > Backend-Entwicklung > C++ > Wie initialisiere ich eine Const-Mitgliedsvariable in einem C-Konstruktor?

Wie initialisiere ich eine Const-Mitgliedsvariable in einem C-Konstruktor?

Mary-Kate Olsen
Freigeben: 2024-11-03 02:54:03
Original
352 Leute haben es durchsucht

How to Initialize a Const Member Variable in a C   Constructor?

So initialisieren Sie ein unveränderliches Feld in einem Konstruktor: Eine eingehende Untersuchung

In C ist es möglich, auf ein Szenario zu stoßen, in dem Sie beabsichtigen, eine Klasse zu erstellen, die ein unveränderliches Feld in ihrem Konstruktor erfordert. In einem solchen Fall ist es von entscheidender Bedeutung, die Unveränderlichkeit des Feldes sicherzustellen. In diesem Artikel wird der richtige Ansatz zum Erreichen dieses Ziels erläutert.

Stellen Sie sich ein Szenario vor, in dem die Klasse Foo als Datenstruktur dient und die Klasse Bar ein Wrapper um Foo ist, der während der Konstruktion einen Foo-Zeiger als Argument benötigt. Unser Ziel ist es, sicherzustellen, dass dieser Zeiger während der gesamten Lebensdauer einer Bar-Instanz unveränderlich bleibt.

Ein Versuch, den const-Zeiger foo im Bar-Konstruktor zu initialisieren, könnte wie folgt aussehen:

<code class="cpp">class Foo;

class Bar {
public:
    Foo * const foo;
    Bar(Foo* foo) {
        this->foo = foo; // Compiler error
    }
};

class Foo {
public:
  int a;
};</code>
Nach dem Login kopieren

Allerdings , löst dieser Ansatz einen Kompilierungsfehler aus. Um dies zu beheben und die Unveränderlichkeit von foo innerhalb von Bar-Instanzen festzustellen, müssen wir eine Initialisierungsliste verwenden:

<code class="cpp">Bar(Foo* _foo) : foo(_foo) {}</code>
Nach dem Login kopieren

In dieser überarbeiteten Version nimmt der Konstruktor einen Foo-Zeiger als Argument und weist ihn dem Mitglied zu Variable foo mithilfe der Initialisierungsliste und benennt die eingehende Variable um, um mögliche Verwechslungen mit der Mitgliedsvariablen zu vermeiden.

Diese Technik stellt sicher, dass der foo-Zeiger sofort bei der Konstruktion von Bar initialisiert wird, wodurch er für den Rest der Bar unveränderlich wird Lebensdauer der Instanz.

Das obige ist der detaillierte Inhalt vonWie initialisiere ich eine Const-Mitgliedsvariable in einem C-Konstruktor?. 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