c++ - 了解 cout.operator<<() 的行为

标签 c++ operator-overloading iostream cout

根据this question的最佳答案, cout << expr相当于cout.operator<<(expr) .

根据对 this question 的回复,以上说法不正确。

根据我自己的测试,cout.operator<<()cout <<相同当给定一个整数时。当给出一个 float 时,cout.operator<<()将其强制为整数。当给定字符串文字时,如 cout.operator<<("hello world") ,它输出的似乎是一个内存地址。当给定一个包含 std::string 的变量时,它会给出编译器错误。

谁能给出初级到中级水平的解释是怎么回事?

最佳答案

这取决于expr .

这两个问题的答案都是针对特定案例的,而不是一揽子保证。

事实上,一些operator<<free functions , 有些是 member functions .

查阅您最喜欢的 C++ 引用资料以找出是哪一个。

关于c++ - 了解 cout.operator<<() 的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44414863/

相关文章:

c++ - vector 空 Push_back 在 '{' 标记之前调用预期的主表达式

c++ - (*,+,-,/,=) 的运算符重载?

C++14 模板偏特化不可见

c++在类方法中使用cout

c++ - 关于 Qt4 setValidator 用法的莫名其妙的 gcc 投诉

c++ - 实现接受索引数组的下标运算符

c++ - 生成巨大的 Boost.MPL 类型序列

c++ - 为模板类重载友元运算符<<

c++ - 覆盖 ADL 选择的重载

c++ - basic_streambuf::seekoff 当 ios_base::in | 应该返回什么? ios_base::out 被指定了吗?