Esto podría ser una pregunta para principiantes y entender cómo funciona cout es probablemente la clave aquí. Si alguien pudiera vincular a una buena explicación, sería genial. cout<<cout
y cout<<&cout
imprime valores hexadecimales separados por 4 en una máquina linux x86.¿Cuál es la diferencia entre cout << cout y cout << y cout en C++?
Respuesta
cout << cout
es equivalente a cout << cout.operator void *()
. Esta es la expresión utilizada antes de C++ 11 para determinar si una iostream está en un estado de falla y se implementa en std::ios_base
; generalmente devuelve la dirección de static_cast<std::ios_base *>(&cout)
.
cout << &cout
imprime la dirección de cout
.
Dado que std::ios_base
es una clase base virtual de cout
, puede no ser necesariamente contigua a cout
. Es por eso que imprime una dirección diferente.
cout<<&cout
está pasando la dirección de cout
a la corriente.
cout << &cout
está pasando cout
la dirección de cout
.
cout << cout
está imprimiendo el valor de fundición implícitamente cout
a un puntero void*
utilizando su operator void*
.
El enlace está roto. – Destructor
Quité el enlace porque no pude encontrar un reemplazo adecuado. Gracias – GWW
cout << cout
está utilizando la conversión incorporada a void*
que existe con fines de prueba booleanos. Por algún motivo poco interesante, su implementación usa una dirección de 4 bytes en el objeto std::cout
. En C++ 11 esta conversión se eliminó, y esto no debería compilarse.
cout << &cout
está imprimiendo la dirección del objeto std::cout
.
Como ya se ha dicho, cout << cout
utiliza la conversión void*
prevista para la prueba bool (while (some_stream){ ... }
, etc.)
Se imprime el valor & cout + 4 porque la conversión se realiza en la implementación base, y pone a su propio tipo, esto es from libstdc++:
operator void*() const
{ return this->fail() ? 0 : const_cast<basic_ios*>(this); }
- 1. cout << stringstream
- 2. Alineación de C++ al imprimir cout <<
- 3. std :: chrono y cout
- 4. ¿Qué significa "<<" and ">>" en C++ para cout/cin?
- 5. C++ encadenamiento del operador << para std :: cout como el uso
- 6. cout Formateo
- 7. C++ cout printing slowly
- 8. cout << orden de llamada a las funciones que imprime?
- 9. C++ cout valores hexadecimales?
- 10. ¿Por qué std :: cout en lugar de simplemente cout?
- 11. La pregunta sobre cerr cout y clog
- 12. cout (salida estándar) en C++
- 13. En ASP.Net, ¿cuál es la diferencia entre <% = y <% #
- 14. << operador y recursividad
- 15. ¿Cómo se escribe una clase de logger con cout interfaz de estilo (registrador << "Error:" << val << endl;)
- 16. ¿Dónde se declara cout?
- 17. printf vs std :: cout
- 18. Programmatically Ignore Cout
- 19. Sangría Párrafo Con cout
- 20. ¿Cuál es la diferencia entre ofstream "<<" y Write
- 21. ¿Cuál es la diferencia entre <% %> y <%=%>?
- 22. ¿Cuál es la diferencia entre <%# %> y <%= %>?
- 23. cout - ¿qué significa?
- 24. Mezcla cout y wcout mismo programa en
- 25. C++ Cambiar salida de "cout"
- 26. comportamiento cout extraño
- 27. C++, operador ternario, std :: cout
- 28. Redireccionando std :: cout
- 29. ¿Cuál es la diferencia entre <%: y <% = y <% # en aspx?
- 30. diferencia entre <%! %> y <% %>
Aquí hay un ejemplo para las personas. http://ideone.com/0FZXZ –
¿Qué es realmente * is * the question? – Puppy
¿Por qué estás preguntando esto? La pregunta no tiene ningún sentido, no es lógica hacerlo. –