为什么"cout << cout"输出一个地址?

Why does "cout << cout" output an address?

我的第一个理解是cout指向terminal的输出,不知道对不对

也许它是一些内存地址,它不是终端的输出但它连接到它。

我很困惑,任何澄清将不胜感激。

编辑:

当我执行 std::cout << std::cout; 时,输出是 0x467f84,这是一个地址,对吗?

在 C++11 之前 std::basic_ios had a non-explicit type conversion function to void* 能够使用流作为条件。

版本 5 之前的 GCC 不会在 C++11 模式下构建,除非使用特殊标志,这意味着输出流时将使用带 void*operator<< overload,导致对你的行为。

如果您在 C++11 模式或更高版本中构建,使用标志 -std=c++11,那么您应该得到一个编译器错误。