Есть ли какое-то преимущество в использовании функций private
(возможно, также static
) в классе для функций утилиты, используемых в моем классе, которые не нуждаются в доступе к данным экземпляра, используя глобальные функции static
в моем .cpp
файл, реализующий класс?
Первые звуки чище для меня, но второй действительно имеет больше смысла, поскольку эти функции не нужно даже упоминать в файле .h
.
Частные и статические функции в С++
Ответ 1
Я бы не ставил частные статические функции в заголовочный файл, если они не нужны. Они просто загрязнят файл заголовка и добавляют больше работы.
Но частные статические функции могут понадобиться, когда у вас есть метод/функция шаблона в классе и вы хотите использовать в нем эту вспомогательную функцию.
Другая причина использования частных статических функций вместо глобальных статических функций заключается в том, что они могут обращаться к частным членам класса (переменные, функции).
Ответ 2
Если данная функция относится к вашему class
, тогда вы правы. Вы должны сделать их private static
внутри своего тела class
.
[Примечание. Если эта функция утилиты вообще не относится, вы можете подумать о ее включении в namespace
или другой класс Util и сохранить ее в пределах области файла.]
Ответ 3
Просто сделайте их файло-статическими функциями. Если они не имеют никакого отношения к классу, не помещайте их туда.
Ответ 4
Если частная функция не модифицирует членов класса, она не имеет никакого преимущества перед глобальным статиком. Быть внутри или вне класса не имеет значения