ostream deferencing operator <<

Jiw*_*wan 3 c++ cout operators

为什么这样做很好:

cout << "foo";
Run Code Online (Sandbox Code Playgroud)

虽然这不?

(&cout)->operator<<("foo");
Run Code Online (Sandbox Code Playgroud)

它可以正常使用数值,所以我猜它是与覆盖相关的东西.(我正在使用MS Visual C++编译器.)

Jer*_*fin 7

operator<<仅作为有限数量类型的成员函数实现.对于其他类型,它实现为全局重载,如:

std::ostream &operator<<(std::ostream &os, T const &t) { 
    // write the data here
}
Run Code Online (Sandbox Code Playgroud)

您使用的语法仅适用于作为成员函数实现的重载,而不是全局变量.