Почему Ostream :: Operator << глобальная функция для параметров ChAR?

StackOverflow https://stackoverflow.com/questions/4837549

  •  27-10-2019
  •  | 
  •  

Вопрос

В соответствии с http://www.cplusplus.com/reference/iostream/ostream/operator%3C%3C/ Метод оператора <<, определенный на EG Streambuf, является членом Ostream, но для char / char * это глобальная функция. Какое решение дизайна стоит за этой разницей?

Это было полезно?

Решение

operator<< за streambuf* (или же int который звучит более простой случай) и char могли быть реализованы как операторами-членами, либо в качестве операторов, не относящихся к членам (бесплатно).

Я предполагаю, что это связано с проблемами в ретро-совместимости, возникающих при определении C ++: может быть, старый код решал на участнике operator<<(int), и, таким образом, они решили не перемещать его в качестве свободного оператора.

Стандартная библиотека C ++ (а также STL) обладает множеством недостатков, подобной этой.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top