Questa potrebbe essere una domanda per principianti e capire come funziona cout è probabilmente la chiave qui. Se qualcuno potesse collegarsi a una buona spiegazione, sarebbe fantastico. cout<<cout
e cout<<&cout
valori esadecimali separati da 4 su una macchina x86 di Linux.Qual è la differenza tra cout << cout e cout << & cout in C++?
risposta
cout << cout
equivale a cout << cout.operator void *()
. Questo è l'idioma utilizzato prima di C++ 11 per determinare se un iostream si trova in uno stato di errore e viene implementato in std::ios_base
; di solito restituisce l'indirizzo di static_cast<std::ios_base *>(&cout)
.
cout << &cout
stampa l'indirizzo di cout
.
Poiché std::ios_base
è una classe base virtuale di cout
, potrebbe non essere necessariamente contigua con cout
. Ecco perché stampa un indirizzo diverso.
cout<<&cout
sta passando l'indirizzo di cout
allo stream.
cout << &cout
sta passando cout
l'indirizzo di cout
.
cout << cout
fase di stampa del valore delle implicitamente colata cout
a un puntatore void*
utilizzando la sua operator void*
.
Il collegamento è rotto. – Destructor
Ho rimosso il collegamento poiché non sono riuscito a trovare un sostituto adatto. Grazie – GWW
cout << cout
utilizza la conversione incorporata in void*
che esiste per scopi di test booleani. Per qualche motivo non pertinente la tua implementazione utilizza un indirizzo che è 4 byte nell'oggetto std::cout
. In C++ 11 questa conversione è stata rimossa e questo non dovrebbe essere compilato.
cout << &cout
sta stampando l'indirizzo dell'oggetto std::cout
.
Come già detto, cout << cout
utilizza la conversione void*
previsto per il test bool (while (some_stream){ ... }
, ecc)
stampa il valore & cout + 4 perché la conversione è fatta nella implementazione di base, e getta alla propria tipo, questo è from libstdc++:
operator void*() const
{ return this->fail() ? 0 : const_cast<basic_ios*>(this); }
- 1. "cout << cout" - cosa significa l'uscita?
- 2. cout << stringstream
- 3. cout << "привет"; o wcout << L "привет";
- 4. C++ concatenamento dell'operatore << per std :: cout come l'utilizzo
- 5. cout << ordine di chiamata alle funzioni che stampa?
- 6. cosa fa cout << "\ n" [a == N]; fare?
- 7. Does "cout << (char *) NULL" facendo "close (1)" qui?
- 8. Valore decimale di: cout << dec << boost :: this_thread :: get_id()
- 9. Qual è l'output di "cout << (a, b)" e perché?
- 10. Perché std :: cout << principale << std :: endl stampa 1?
- 11. Qual è la differenza tra std :: cout e std :: wcout?
- 12. Perché std :: cout invece di semplicemente cout?
- 13. Che cosa significa "<<" and ">>" in C++ per cout/cin?
- 14. Come cout the std :: basic_string <TCHAR>
- 15. C++ cout << non stampare '0' prima del punto decimale
- 16. Utilizzo di "<<" o "+" per mettere insieme le stringhe quando si utilizza "cout"
- 17. personalizzare cout
- 18. C++ cout printing lentamente
- 19. Perché scrivere una stringa: std :: cout causando un operatore sconosciuto << errore?
- 20. cout (output standard) in C++
- 21. Qual è l'opposto di `fixed` in cout?
- 22. Dove viene dichiarato cout?
- 23. printf vs. std :: cout
- 24. come faccio a scrivere una classe logger con cout l'interfaccia di stile (logger << "Errore:" << val << endl;)
- 25. cout - che cosa significa?
- 26. C++ Cout & Cin & System "Ambiguous"
- 27. Reindirizzamento std :: cout
- 28. Filettatura BOOST: comportamento cout
- 29. C++ 11 std :: cout << "stringa letterale in UTF-8" alla console cmd di Windows? (Visual Studio 2015)
- 30. In ASP.Net, qual è la differenza tra <% = e <% #
Ecco un esempio per le persone. http://ideone.com/0FZXZ –
In realtà * è * la domanda? – Puppy
Perché stai chiedendo questo. La domanda non ha alcun senso, non è logico farlo. –