Verhalten bei gleichnamigen Variablen
-
Was im Standard steht, weiß ich nicht, aber immer die "lokalste" Variable bleibt sichtbar. Das sind innerhalb von Y die Parameter. Die Ausgabe lautet also 1, 2, 3, 3.
-
Ist bloss ein kleiner Fehler, er meinte:
this->B
-
Ja, ich meinte tatsächlich
this->B- habe den Rest auch mal gefixt. Irgendwie kam ich da wohl durcheinander. Danke an alle!Gruß
-
Falls sich Variable überdecken wird, immer die genommen, die im nächsten Gültigkeitsbereich liegt.
int x = 9; void f() { int x = 12; { int x = 5; cout << x; //5 cout << ::x; // 12 cout << ::::x; // 9 } cout << x; // 12 cout << ::x; // 9 }
-
@ Zeus: Ich wusste bisher gar nicht, dass eine explizite Auswahl des Scopes möglich ist. Danke dafür. Bei zu vielen Anwendungen wird das ganze aber bestimmt sehr unübersichtlich :p
Gruß
-
theliquidwave schrieb:
@ Zeus: Ich wusste bisher gar nicht, dass eine explizite Auswahl des Scopes möglich ist. Danke dafür. Bei zu vielen Anwendungen wird das ganze aber bestimmt sehr unübersichtlich :p
Im Prinzip braucht man deshalb nur einmal :: um den aktuellen Scope zu verlassen. Viel mehr ebenen an Variablen-Ueberdeckungen sollte man nicht haben. Oft ist es aber ja so, dass du in einer Klasse eine Funktion wie zB swap() hast oder connect() oder dergleichen die etwaige globale Funktionen verdecken koennen. Da ist ein ::connect() dann gaengig um die globale connect-Funktion aufrufen zu koennen.
-
Zeus schrieb:
Falls sich Variable überdecken wird, immer die genommen, die im nächsten Gültigkeitsbereich liegt.
int x = 9; void f() { int x = 12; { int x = 5; cout << x; //5 cout << ::x; // 12 cout << ::::x; // 9 } cout << x; // 12 cout << ::x; // 9 }::::?

-
::::::absolut genial.
-
@Zeus:
Der ::-Operator geht nicht einfach einen Schritt zurück, sondern qualifiziert den globalen namespace. Warum postest du etwas, von dem nicht weisst, ob es geht?!
-
drakon schrieb:
@Zeus:
Der ::-Operator geht nicht einfach einen Schritt zurück, sondern qualifiziert den globalen namespace.schade, da könne man richtig unlesbaren code schreiben.
~1
2
..
it's a gas~
-
drakon schrieb:
@Zeus:
Der ::-Operator geht nicht einfach einen Schritt zurück, sondern qualifiziert den globalen namespace. Warum postest du etwas, von dem nicht weisst, ob es geht?!Ops, da ist wohl etwas durch den Sprachmixer gegangen.