Je cherche des opérateurs surchargés.Impossible d'utiliser la fonction surchargée à l'intérieur
Pour une raison quelconque, je ne reçois pas la sortie de cout de ma fonction surchargée.
class MyString {
public:
MyString(const char aString[20]){
// copy the input string to "data"
for(int i = 0; i < 20; i++){
data[i] = aString[i];
}
}
public:
MyString operator=(const MyString copyFrom){
MyString copyTo("");
cout << "hi";
for(int i = 0; i < 20; i++){
copyTo.data[i] = copyFrom.data[i];
}
return copyTo;
}
public:
char data[20]; // a pointer to memory
};
int main() {
MyString a("hello");
MyString b = a;
cout << b.data << endl;
return 0;
}
Quand je lance mon code, je reçois le résultat suivant:
C: \ MinGW \ bin> g ++ stringoverloading3.cpp
C: \ MinGW \ bin> a.exe bonjour
C: \ MinGW \ bin>
Est-il quelque chose une surcharge qui tue cout?
à moins bien sûr que ma surcharge ne soit pas réellement appelée ... hmm – JoeBass
Ce 'MyString b = a;' n'est pas une affectation (c'est une initialisation), et n'appelle donc pas l'opérateur d'affectation. Votre livre de texte C++ devrait expliquer cela. –
btw tableaux et les pointeurs ne sont pas les mêmes que le commentaire dans le code suggère – user463035818