У меня здесь совершенно базовый вопрос о C ++.
#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
должно быть преобразован в шестнадцатеричную
форму!
Как компилятор на самом деле связывает операторы, чтобы преобразование происходило?