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