Я только начинаю изучать базовый синтаксис C ++, и я немного запутался в фрагменте кода, с которым столкнулся.
Для класса, созданного с именем MyString, была перегрузка оператора, определяемая как:
ostream& operator<<(ostream& os, const MyString& s)
{
os << s.data;
return os;
}
Затем в некоторой функции драйвера запускается оператор:
cout << s3 << endl;
где s3 имеет тип объекта MyString.Результат выводит значение s3.
Я не совсем понимаю, как работает это утверждение.После игры с ним кажется, что конструктор копирования вызывается один раз, а затем 3 объекта деконструируются.Как именно эта линия работает?Кажется, что оператор принимает ссылку на ostream и MyString, но не endl, ни?Кроме того, почему должен быть вызван только один конструктор копирования, когда используются два экземпляра «<<»?Может быть, я даже не задаю правильные вопросы, или мои вопросы даже не имеют смысла, потому что я действительно смущен тем, что происходит в этих строках.Если это так, кто-то может объяснить, пожалуйста, только общее объяснение того, что происходит? </p>