为什么"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
,那么您应该得到一个编译器错误。
我的第一个理解是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
,那么您应该得到一个编译器错误。