c++ - 为什么对 operator<< 的显式调用不明确?

标签 c++ iostream

这是简单的代码:

int main()
{
    int x=0;
    std::cout<<x; 
    operator<<(std::cout,x); //ambiguous

    return 0;
}

为什么是operator<<(std::cout,x)模棱两可却又不叫std::cout<<x; ?谢谢

最佳答案

这里的问题是,对于输出整数, operator<< is an std::ostream member function .

因此,要显式调用运算符函数,您应该这样做,例如

std::cout.operator<<(x);

stand-alone operator<< function用于字符和字符串。

关于c++ - 为什么对 operator<< 的显式调用不明确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32810394/

相关文章:

c++ - 在 C++ 中使用 C-LZMA-SDK 解压缩 LZMA 返回 SZ_ERROR_DATA 因为输入流的第一个字节是 != 0

java - 在写入该值之前检查变量是否包含特定值是否是明智的优化?

c++ - cstdio 流与 iostream 流?

c++ - 如何取出你放入 ostream 对象的最后一个字符

c++ - 将提供 operator<< 的对象转换为 std::string 的标准库函数

c++ - 外部 "C"导致错误 "expected ' (' before string constant"

c++ - 使用 SendMessage() 多线程

c++ - 我可以使用 = 运算符将一个对象的值分配给另一个对象,而不重载运算符吗?

c++ - 如何将 "Dummy"值替换为 std::cin?

c++ - Facet ctype、do_is() 和特化