Heim > Backend-Entwicklung > C++ > Konstruktorinitialisierung mit demselben Namen: C-Standardkonformität?

Konstruktorinitialisierung mit demselben Namen: C-Standardkonformität?

Patricia Arquette
Freigeben: 2024-11-15 10:18:03
Original
409 Leute haben es durchsucht

Constructor Initialization with Same Name: C   Standard Compliance?

Konstruktorinitialisierung von Mitgliedsvariablen mit gleichen Namen: Einhaltung des C-Standards?

Frage:

Liegt es im C Standard zum Initialisieren von Mitgliedsvariablen mithilfe eines Konstruktorarguments, das denselben Namen wie das Mitglied hat variabel?

Beispiel:

class Blah {
    std::vector<int> vec;

public:
    Blah(std::vector<int> vec): vec(vec)
    {}
};
Nach dem Login kopieren

Antwort:

Ja, es ist legal und funktioniert garantiert entsprechend das C Standard.

Erklärung:

Abschnitt 12.6.2/7 des C-Standards besagt: „Namen in der Ausdrucksliste eines Mem-Initialisierers werden im ausgewertet Geltungsbereich des Konstruktors, für den der Mem-Initializer angegeben ist.“ Mit anderen Worten, das Konstruktorargument und die Mitgliedsvariable sind unterschiedliche Entitäten, verwenden aber denselben Namen.

Dadurch können wir die Mitgliedsvariable mit dem Wert des Konstruktorarguments initialisieren, wie im Beispiel gezeigt.

Hinweis:

Es wird empfohlen, konstante Referenzen für Konstruktorargumente zu verwenden, um unnötiges Kopieren von Objekten zu vermeiden. Daher wäre es vorzuziehen, Folgendes zu verwenden:

Blah(const std::vector<int> &vec): vec(vec) {}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonKonstruktorinitialisierung mit demselben Namen: C-Standardkonformität?. 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