C++ n'autorise pas le polymorphisme pour les méthodes basées sur leur type de retour. Cependant, en surchargeant une fonction de membre de conversion implicite, cela semble possible.Pourquoi les fonctions membres de conversion implicites surchargent-elles le travail par type de retour, alors qu'il n'est pas autorisé pour les fonctions normales?
Est-ce que quelqu'un sait pourquoi? Je pensais que les opérateurs sont manipulés comme des méthodes internes.
Edit: Voici un exemple:
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
}
Pourriez-vous donner un exemple? Je ne suis pas sûr de ce que vous entendez par surcharge par type de retour. –
Pourriez-vous donner un exemple? – jkeys