primitive Variablen auf Umweg doch über Methode ändern

Meine Frage ist nun, warum die markierte Stelle einmal funktioniert und einmal nicht. Ist das so, weil die Variable quasi ein Pointer auf das Objekt, und bei der new Zuweisung wird dann der Pointer auf ein neues Objekt gesetzt?

Das liegt eben daran wie Tom schon sagte das die Referenz bzw der
Referenztyp auch call by value übergeben wird (sprich bei der Übergabe
kopiert wird). Wenn du nun mit new ne neue Zuweisung an deine Referenz
machst, ändert das die Referenz aber nicht das Objekt auf das die
ursprüngliche Referenz zeigte. => dein objekt vor dem Aufruf bleibt
unverändert.

Gruß

RedWing
 
//nochmal offtopic

Hab grad noch a bisl rumgespielt (just for info).
Korrektes call by reference in C++ (was in Java und C so nicht geht)
würde so aussehen:

Code:
#include <iostream>

using namespace std;

void bar(char*& s) {
    s = "bar";
}

int main() {
    char* s = "foo";
    bar(s);
    cout << s << endl; //gibt korrekter Weise bar aus
}

Gruß

RedWing
 
Zurück