1

J'ai hérité d'un grand projet Visual Studio 6 C++ qui doit être traduit pour VS2005. Certaines classes ont défini l'opérateur < et l'opérateur [], mais ne spécifient pas de type de retour dans les déclarations. VS6 le permet, mais pas VS2005. Je suis conscient que la norme C spécifie que le type de retour par défaut pour les fonctions normales est int, et j'ai supposé que VS6 aurait pu suivre cela, mais cela s'appliquerait aussi aux opérateurs C++? Ou VS6 pourrait-il déterminer le type de retour par lui-même?Quelles sont les valeurs de retour par défaut pour l'opérateur <et l'opérateur [] en C++ (Visual Studio 6)?

Par exemple, le code définit une classe de chaîne personnalisée comme ceci:

class String { 
    char arr[16]; 
    public: 
    operator<(const String& other) { return something1 < something2; } 
    operator[](int index) { return arr[index]; } 
}; 

Would VS6 ont mis simplement les types de retour pour les deux comme int, ou aurait-il été assez intelligent pour comprendre que l'opérateur [ ] devrait retourner un char et un opérateur < devrait retourner un booléen (et ne pas convertir les deux résultats à int tout le temps)?

Bien sûr, je dois ajouter des types de retour pour rendre ce code conforme à VS2005 C++, mais je veux m'assurer de spécifier le même type que précédemment, afin de ne pas changer immédiatement le comportement du programme. moment, nous normaliserons les choses plus tard).

Répondre

1

operator< renvoie bool par défaut.

operator[] retours int par défaut (je pense ), mais il devrait certainement être changé pour retourner quelle que soit la collection contient. Pour l'exemple de chaîne que vous avez donné ci-dessus, ce serait char ou wchar_t.