这是代码

#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 World0x8048830
如果我使用operator<<(cout,"Hellow World");可以正常工作cout.operator<<("Hellow World");operator<<(cout,"Hellow World");

最佳答案

std::basic_ostreamoperator<<重载为membersnon-members两组。

差异是由于这样的事实,当您编写cout<<"Hellow World"<<endl;时,选择了const char*的非成员重载来打印字符串文字。

当您调用成员版本时,最合适的只是void*重载。

关于c++ - 插入运算符未产生预期的输出?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41414492/

10-13 07:04