У меня есть основной вопрос на С++.
#include <iostream>
using namespace std;
int main() {
int a = 255;
cout << hex << a << endl; // <-----
}
В приведенном выше коде, как заключен оператор std::cout?
Я понимаю, что реализация cout вернет ссылку на объект cout, чтобы разрешить цепочку, поэтому она должна выполняться как:
(((cout << hex) << a) << endl)
то есть. эквивалентно их, чтобы
-
cout << hex -
cout << a -
cout << endl
Но это не может быть так, потому что некоторая ценность a должна быть преобразована в форму hex!
Как операторы фактически привязаны компилятором, чтобы сделать преобразование?