È così che sarai costretto a mettere la consolle a sinistra come voleva Dio! :)
In realtà ha a che fare con qualcosa chiamato overloading dell'operatore. Se stai semplicemente imparando il C++ probabilmente non lo hai già visto, quindi archivia quello che sto per dire in "cose che prenderò più tardi".
C++ vive sopra C. In C <<
e >>
sono solo operatori bit shift. In C++ può essere di più. std:cout << foo
NON è C, è C++. Il motivo è C++ è perché l'oggetto std::cout
sovraccarica l'operatore <<
per significare qualcosa di diverso po spostamento.
In altre parole, <<
significa solo inviare foo
a cout
, perché cout
ha detto che è ciò che significa. <<
è, in effetti, una funzione della classe cout
.
E 'quasi come se lei ha detto std::cout->sendThatToMe(foo)
.
In questo caso intero foo
è solo un parametro sfortunato lungo per la corsa che non ha voce su ciò che significa <<
. Questo è il motivo per cui non puoi farlo nell'altro modo. Se avete fatto, sarebbe come se si stesse dicendo questo:
foo->sendMeToThat(std::cout).
che può essere fatta funzionare se si aggiunge che la funzione (ben l'operatore >>
davvero) per ogni oggetto puzzolente si potrebbe mai desiderare di inviare al console. Oh e buona fortuna tirandolo fuori con i primitivi.
Così, mentre penso che ci sono ragioni di stile molto buoni per voler mantenere la roba console lì a sinistra in realtà è una ragione tecnica deve essere in questo modo. È perché gli operatori in sovraccarico sono già stati associati in modo associativo. Sono stati da quando erano abituati a spostare pezzi nei vecchi C giorni. Sovraccaricarli non offre la possibilità di cambiare la loro associatività.
incolla questo codice 'char & operator << (char & DST, std :: istream & src) {src >> dst; return dst; } 'nel tuo e gioca con' char a; un << std :: cin; 'un po '. Oh, potresti provare a spostare i bit in 'a'. –
Un modo pratico per ricordare la differenza è che l'operatore punta nella direzione del flusso di dati. :) – thedayturns