GT *_* 77 1 c++ outputstream operator-overloading char
下面是代码:
#include <iostream>
int main()
{
std::cout << 'a'; // a
operator << (std::cout, 'a'); // a
std::cout.operator << ('a'); // 97
}
Run Code Online (Sandbox Code Playgroud)
用命令编译:
g++.exe -Wall -g -Wall -std=c++11 -c <cpp file> -o <o file>
Run Code Online (Sandbox Code Playgroud)
g++.exe <exe file> <o file> -O0
Run Code Online (Sandbox Code Playgroud)
aa97执行时产生输出。
似乎由于某种原因调用operator <<重载作为成员函数std::cout调用 的模板特化int,即使我通过了char. 这是正确的吗?
为什么会发生?