Ho una domanda C++ completamente di base qui.Come avviene il concatenamento dell'operatore in C++?
#include <iostream>
using namespace std;
int main() {
int a = 255;
cout << hex << a << endl; // <-----
}
Nel pezzo codice di cui sopra, come è incatenato la dichiarazione std::cout
?
Sono consapevole che un'implementazione di cout
ritornerebbe il riferimento cout
oggetto per consentire concatenamento accada, quindi deve essere eseguito come:
(((cout << hex) << a) << endl)
cioè equivalente a questi, al fine
cout << hex
cout << a
cout << endl
Ma questo non può essere il caso perché in qualche modo il valore di a
ha bisogno di essere convertito in hex
forma!
In che modo gli operatori sono concatenati dal compilatore per rendere possibile la conversione?
Probabilmente dovresti anche menziona l'altra parte del puzzle, il sovraccarico di 'ostream & operator << (ostream & (*) (ostream &)), che è il modo in cui vengono chiamati i manipolatori come' hex'. – hammar
@hammar Ottima osservazione! Grazie mille per il commento, ho modificato la risposta per riflettere questo punto essenziale. – dasblinkenlight