В то время, когда вы сталкиваетесь с некоторыми фактами о дизайне классов, в частности, должны ли они быть членами или нет, я посмотрел в "Эффективный С++" и нашел пункт 23, а именно "Предпочесть не-членские функции, отличные от друга" для функций-членов. Чтение того, что из первых рук в примере с веб-браузером имело какой-то смысл, однако удобные функции (названные такими нечеткими функциями, как это в книге) в этом примере изменят состояние класса, не так ли?
-
Итак, первый вопрос, не должны ли они быть членами, чем?
-
Читая немного дальше, он считает, что функции STL и действительно некоторые функции, которые не реализованы некоторыми классами, реализованы в stl. Следуя идеям книги, они развиваются в некоторые удобные функции, которые упаковываются в некоторые разумные пространства имен, такие как
std::sort
,std::copy
fromalgorithm
. Например, классvector
не имеет функцииsort
, и используется функция stlsort
, поэтому она не является членом векторного класса. Но можно было бы также разделить те же рассуждения на некоторые другие функции в векторном классе, такие какassign
, что также не может быть реализовано как член, а как функция удобства. Однако это также изменяет внутреннее состояние объекта, например, на котором он работал. Итак, в чем причина этого тонкого, но важного (я думаю) вопроса.
Если у вас есть доступ к книге, вы можете уточнить эти моменты немного больше для меня?