Какое влияние оказывает дизайн и производительность на статичность всех функций, которые не касаются переменной-члена класса?
производительность: статические функции-члены могут быть немного быстрее, чем нестатические функции-члены, потому что им не нужно передавать указатель this
, но вы вряд ли заметите разницу; там, где используется встраивание, может не быть ни одного. Кроме того, указатели на статическую функцию могут использоваться напрямую, тогда как «указатели» на нестатические функции-члены обычно являются смещениями / индексами и для использования требуют указатель this
; можно ожидать, что задействованные операции ЦП будут несколько более сложными.
дизайн: выбор между статической и нестатической функцией-членом может быть безопасно сделан на основе необходимости доступа к данным нестатического члена-объекта для полного выполнения ожидаемой операции. Если вам, как правило, удобно работать с ООП, и не кажется интуитивно понятным и разумным вызывать функцию, используя обозначение object.fn(x, y, z)
, - что функция поддается восприятию как операция над текущим состоянием этого конкретного объекта - тогда она вероятно, не должен быть нестатичным членом.
Игнорируя вопрос, насколько я понимаю, и рассматривая более широкую местность, у свободных функций есть свои преимущества, как обсуждалось в других ответах; противодействие тому, что более тесная ассоциация статических элементов может помочь программистам найти потенциально полезные процедуры - все в зависимости от инструментов и привычек, которые у них есть.