У меня возник вопрос от моего ученика, спрашивающего, почему следующий код приводит к таинственным выводам.
Код:
#include <iostream>
int main() {
char op = '+';
int num = 9;
std::string res =
"a const char* concatenated with a char and std::string "
+ op + std::to_string(num);
std::cout << res << std::endl;
}
Ну, он ожидал получить: a const char* concatenated with a char and std::string + 9
и не мог понять, почему он получает всего std::string 9
. Понятно, что если бы это был вызов функции, а не оператор, проблема сразу исчезла бы.
Любые советы, которые я могу дать новичкам, как избежать таких ошибок при перегрузке оператора?