我的第一个理解是cout指向终端的输出,但我不知道这是否正确。
也许它是一些内存地址,它不是终端的输出,而是连接到它。
我很困惑,任何澄清都会非常感激。
编辑:
当我做std::cout << std::cout;
输出为0x467f84
时,它是一个地址,对吗?
答案 0 :(得分:5)
在C ++ 11之前std::basic_ios
有一个非显式type conversion function to void*
能够将流用作条件。
版本5之前的GCC除非使用特殊标志,否则不会在C ++ 11模式下构建,这意味着在输出流时将使用operator<<
overload void*
你的行为。
如果你使用标志-std=c++11
构建C ++ 11模式或更高版本,那么你应该得到编译器错误。