Memberzuweisung mit gleichem Namen - was macht der Compiler?
-
Hallo,
Seit langer Zeit versuche ich folgendes zu umgehen, frage mich aber, was der C++-Standard daraus macht:
class A { A(int b) { b = b; }; int b; }
-
Lokale Variablen ueberdecken andere mit gleichem Namen. Bei b=b im Konstruktor wird nur das b verwendet, das als Parameter angegeben ist.
-
DarthZiu schrieb:
...was der C++-Standard daraus macht:
class A { A(int b) // mit b Deklarierst du eine lokal gültige Variable { b = b; // lokale Variablen haben immer Vorrang }; int b; }
Du kannst aber in diesem Fall auf 2 Arten dein Problem umgehen:
class A { A(int b) : b(b) // Stichwort: Initialisierungsliste [links steht Member) // - Nur in Konstruktoren möglich (und einer nachträglichen // Zuweisung vorzuziehen. { // Oder (auch in anderen Funktionen möglich) this->b = b; // Mittels this-> greifst du auf den Member zu. }; int b; }
-
asc schrieb:
Du kannst aber in diesem Fall auf 2 Arten dein Problem umgehen:
class A { A(int b) : b(b) // Stichwort: Initialisierungsliste [links steht Member) // - Nur in Konstruktoren möglich (und einer nachträglichen // Zuweisung vorzuziehen. { // Oder (auch in anderen Funktionen möglich) this->b = b; // Mittels this-> greifst du auf den Member zu. }; int b; }
Ja danke. Zurzeit mach ich es immer Zweifel dann immer mit this oder mit nem anderen Namen. Hat mich nur mal interessiert, was der Standard sagt.
Danke