为什么是ostream :: operator<< char参数的全局函数?

时间:2011-01-29 15:03:33

标签: c++ iostream global ostream

根据http://www.cplusplus.com/reference/iostream/ostream/operator%3C%3C/运营商<<例如,在例如streambuf是ostream的成员,但对于char / char *,它是一个全局函数。这种差异背后的设计决定是什么?

1 个答案:

答案 0 :(得分:3)

<{1}} operator<<(或streambuf*听起来更简单)int可以作为成员运营商实施,也可以作为非会员(免费)实施运算符。

我的猜测是,这是由于在定义C ++时出现了复古兼容性问题:可能旧代码在成员char上进行转发,因此他们决定不将其作为自由运算符移动。

C ++标准库(以及STL)有很多像这样的不和谐。