Я трясусь от перегруженных операторов.Не могу отключиться из-за перегруженной функции
По какой-то причине я не получаю выход cout из моей перегруженной функции.
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;
}
Когда я запускаю мой код, я получаю следующий результат:
C: \ MinGW \ Bin> г ++ stringoverloading3.cpp
C: \ MinGW \ Bin> A.exe привет
C: \ MinGW \ Bin>
есть ли что-то bout перегрузка, которая убивает cout?
, если, конечно, моя перегрузка на самом деле не вызвана ... hmm – JoeBass
Это 'MyString b = a;' не является назначением (это инициализация), и поэтому не будет называть оператор присваивания. Ваш текст на C++ должен объяснить это. –
btw массивы и указатели не совпадают с комментариями в коде. – user463035818