Mam tutaj całkowicie podstawowe pytanie w języku C++.Jak działa łańcuchowanie operatora w C++?
#include <iostream>
using namespace std;
int main() {
int a = 255;
cout << hex << a << endl; // <-----
}
w kawałku kodu powyżej, jak jest stwierdzenie std::cout
przykuty?
Rozumiem, że implementacja cout
wróci odniesienie do cout
obiektu w celu umożliwienia łączenia się zdarzyć, więc powinno być wykonywane jako:
(((cout << hex) << a) << endl)
czyli równoważne do tych, w celu
cout << hex
cout << a
cout << endl
Ale to nie może być przypadek, bo jakoś wartość a
należy przekonwertować do hex
formie!
W jaki sposób operatorzy są powiązani przez kompilator, aby dokonać konwersji?
Powinieneś prawdopodobnie także wspomnij o innej części układanki, o przeciążeniu 'ostream & operator << (ostream & (*) (ostream &)), w ten sposób wywoływane są manipulatory takie jak' hex'. – hammar
@hammar Świetna obserwacja! Dziękuję bardzo za komentarz, zredagowałem odpowiedź, aby odzwierciedlić tę istotną kwestię. – dasblinkenlight