Hallo,
ich arbeite mich gerade durch ein C++-Buch. Ich habe gerade ein
Verständnisproblem mit den Übungen. (Die Quelltexte sind auch so im Netz
herunterladbar, also wird es wohl kein Copyright-Problem mit meinen
abgetippten Listings im Anhang geben.)
Meine Frage bezieht sich auf die Funktion in Zeile 95 der cpp-Datei. Es
gibt eine ziemliche Häufung von Funktionen mit Namen add()
unterschiedlicher Signatur.
Interessant für die Frage sind wohl
1 | Rational add(Rational a, Rational b)
|
2 | void Rational::add(Rational r)
|
Warum wählt der Compiler beim Ausdruck:
1 | Rational ai {Rational(a, 1)};
|
2 | return ai.add(b);
|
nicht die Funktion Rational add(Rational a, Rational b), zu der die
Signatur passen würde, sondern die Funktion void Rational::add(Rational
r), die keinen Rückgabewert liefert und damit nicht als Rvalue taugt?