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

时间:2016-07-03 12:11:31

标签: c++ cout memory-address

我的第一个理解是cout指向终端的输出,但我不知道这是否正确。

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

我很困惑,任何澄清都会非常感激。

编辑:

当我做std::cout << std::cout;输出为0x467f84时,它是一个地址,对吗?

1 个答案:

答案 0 :(得分:5)

在C ++ 11之前std::basic_ios有一个非显式type conversion function to void*能够将流用作条件。

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

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