C++ lässt keine Polymorphie für Methoden zu, die auf ihrem Rückgabetyp basieren. Beim Überladen einer impliziten Konvertierungselementfunktion scheint dies jedoch möglich.Warum funktionieren implizite Umsetzungselementfunktionen beim Überladen nach Rückgabetyp, während dies für normale Funktionen nicht zulässig ist?
Weiß jemand warum? Ich dachte, Operatoren werden intern wie Methoden behandelt.
Edit: Hier ist ein Beispiel:
struct func {
operator string() { return "1";}
operator int() { return 2; }
};
int main() {
int x = func(); // calls int version
string y = func(); // calls string version
double d = func(); // calls int version
cout << func() << endl; // calls int version
}
Können Sie ein Beispiel nennen? Ich bin nicht sicher, was Sie meinen, indem Sie nach Rückgabetyp überladen. –
Würden Sie ein Beispiel geben? – jkeys