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).