Есть ли какие-либо преимущества при использовании private
(возможно, также static
) функции в классе для служебных функций, используемых в моем классе, которые не нуждаются в доступе к данным экземпляра с использованием глобальных функций static
в моем .cpp
файл, реализующий класс?
Первые звуки чище для меня, но второй действительно имеет смысл, поскольку эти функции не нужно даже упоминать в файле .h
.Частные или статические функции в C++
ответ
Я бы не ставил частный статический функции в файл заголовка, если они не нужны. Они просто загрязнят файл заголовка и добавляют больше работы.
Но частные статические функции могут потребоваться, если у вас есть метод/функция шаблона в классе и вы хотите использовать эту вспомогательную функцию.
Другой причиной использования частных статических функций вместо глобальных статических функций является то, что они могут получить доступ к частным членам класса (переменные, функции).
Если данная функция относится к вашему class
, тогда вы правы. Вы должны сделать их private static
в вашем теле class
.
[Примечание: Если эти функции полезности не относится вообще, то вы можете думать о том, заключая их в namespace
или другого класса Util и держать его в пределах файла.]
он может относиться к реализации класса , а не интерфейс класса, как в большинстве случаев. в этом случае не нужно загрязнять интерфейс класса –
Просто сделайте их файло-статическими функциями. Если они не имеют никакого отношения к классу, не кладите их туда.
Я бы порекомендовал неназванную функцию пространства имен вместо файловой статической –
Я знаю, что «современный C++» вместо этого рекомендует использовать функции в неназванных пространствах имен, но я не вижу никаких технических преимуществ. На самом деле это может быть невыгодно, поскольку такая функция имеет внешнюю связь и может замедлить связь. – zvrba
http://stackoverflow.com/questions/154469/unnamed-anonymous-namespaces-vs-static-functions –
Если частная функция не изменяет членов класса, она не имеет никакого преимущества перед глобальным статиком. Будучи внутри или вне класса, не имеет значения
- 1. Статические или частные
- 2. Частные статические функции в javascript
- 3. C++: частные статические переменные в OpenMP
- 4. C++ частные статические переменные-члены
- 5. Функции члена класса статические и частные
- 6. статические частные переменные, не работающие в C++
- 7. F # Частные статические методы
- 8. Статические частные переменные в Javascript
- 9. «Частные методы» или статические функции в Objective-C. Какой из них я должен использовать?
- 10. Статические функции в C++
- 11. Почему статические частные переменные в JavaScript статичны?
- 12. C++: зачем объявлять частные функции?
- 13. Частные статические члены - использование памяти
- 14. Объявлять частные статические члены в F #?
- 15. C++, шаблоны, статические функции
- 16. Статические функции-члены в C++
- 17. C ссылки статические функции C++
- 18. Статические методы в C++
- 19. C++ называть частные функции в контейнерном классе
- 20. Как иметь частные функции в C++
- 21. Статические функции файловой области C++
- 22. Частные И Статические И Унаследованные переменные !? Или аналогичные
- 23. Частные функции в JavaScript
- 24. Когда следует использовать общедоступные/частные/статические методы?
- 25. C++: Частные виртуальные функции в сравнении с чисто виртуальные функции
- 26. JS: ООП частные функции/частные поля
- 27. статические функции сопзЬ указатели C
- 28. Статические функции или события в Flex?
- 29. Частные статические поля, не статического класса
- 30. Как статические конструкторы и частные конструкторы отличаются?
Связанный: http://stackoverflow.com/questions/2739146/c-oop-which-functions-to-put-into-the-class –