4

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

4

1 回答 1

3

operator<<for streambuf*(或者int听起来更简单的情况)并且char可以既作为成员运算符实现,也可以作为非成员(自由)运算符实现。

我的猜测是,这是由于在定义 C++ 时出现了追溯兼容性问题:也许旧代码正在中继 member operator<<(int),因此他们决定不将其作为自由运算符移动。

C++ 标准库(以及 STL)有许多像这样的不均匀性。

于 2011-01-29T15:35:47.363 回答