根据http://www.cplusplus.com/reference/iostream/ostream/operator%3C%3C/运营商<<例如,在例如streambuf是ostream的成员,但对于char / char *,它是一个全局函数。这种差异背后的设计决定是什么?
答案 0 :(得分:3)
operator<<
(或streambuf*
听起来更简单)int
可以作为成员运营商实施,也可以作为非会员(免费)实施运算符。
我的猜测是,这是由于在定义C ++时出现了复古兼容性问题:可能旧代码在成员char
上进行转发,因此他们决定不将其作为自由运算符移动。
C ++标准库(以及STL)有很多像这样的不和谐。