4

http://www.cplusplus.com/reference/iostream/ostream/operator%3C%3C/によると、たとえば streambuf で定義された operator<< メソッドは ostream のメンバーですが、char / char * の場合はグローバル関数です. この違いの背後にある設計上の決定は何ですか?

4

1 に答える 1

3

operator<<for streambuf*(またはint、より単純なケースに聞こえます) でありchar、メンバー オペレーターとして、または非メンバー (無料) オペレーターとして実装することができます。

私の推測では、C++ の定義中にレトロ互換性の問題が発生したことが原因であると考えられます。古いコードが member を中継してoperator<<(int)いた可能性があるため、無料の演算子として移動しないことにしました。

C++ 標準ライブラリ (および STL) には、このような多くの不均一性があります。

于 2011-01-29T15:35:47.363 に答える