这是代码
#include<iostream>
using namespace std;
main()
{
cout<<"Hellow World"<<endl;
cout.operator<<("Hellow World");
cout.operator<<(endl);
}
我知道
cout<<"Hellow World"<<endl;
被解释为cout.operator<<("Hellow World");
但是这段代码产生了以下结果Hellow World
0x8048830
如果我使用
operator<<(cout,"Hellow World");
可以正常工作cout.operator<<("Hellow World");
和operator<<(cout,"Hellow World");
最佳答案
std::basic_ostream
将operator<<
重载为members和non-members两组。
差异是由于这样的事实,当您编写cout<<"Hellow World"<<endl;
时,选择了const char*
的非成员重载来打印字符串文字。
当您调用成员版本时,最合适的只是void*
重载。
关于c++ - 插入运算符未产生预期的输出?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41414492/