Referenzen in Klassen
-
Hallo zusammen
wieso kann ich in diesem Programm eine Referenz ohne Compilerfehler
(aus der Funktion "funktion" zurückgeben, normale int Werte aber nicht??class LEAFS { public: int ls; int bs; int& funktion(int z); private: int ps; }; int& LEAFS::funktion(int z) { ls = z; return ls; } int main(int argc, char* argv[]) { LEAFS sit; char var; int max = 100; sit.funktion(8) = max;//wieso geht das hier als Referenz? cout<<max<<" "<<endl;// wenn ich aber aus der Methode funktion nur eine int cout<<sit.ls<<endl; // Variable zurückgebe bekomme ich einen Compiler Fehler? var = getch(); return 0; }
-
wenn du eine int-Variable zurückgibst steht bei der Zuweisung als l-value ein Wert dem dann ein anderer Wert zugewiesen werden soll
Quatsch
Guanin schrieb:
//was soll diese Methode denn überhaupt tun??
int& LEAFS::funktion(int z)
{
ls = z;
return ls;
}int main(int argc, char* argv[])
{
LEAFS sit;
int max = 100;
sit.funktion(8) = max;//was soll diese Zuweisung denn bezwecken???
cout<<max<<" "<<endl;//
return 0;
}[/cpp]
was soll die Methode funktion denn überhaupt tun?? Wenn nur das Attribut ls verändert werden soll dann:
void LEAFS::funktion(int z) { ls = z; }
-
Die Methode hat gar keinen Sinn, sie dient nur zum Test!
und wieso wird dann bei der Referenz nicht auch der Wert der Variablen zurück-
gegeben, auf den sie sich bezieht?
-
wenn du eine Referenz zurückgibst, dann kann dies als l-value bei einer Zuweisung dienen, da die zugehörige Variable für sich einen Speicher belegt hat.
Ist doch klar, daß variable=5 funktioniert und 3=5 nicht