Закрытые и статические функции в C ++ - PullRequest
20 голосов
/ 27 июля 2011

Есть ли преимущество использования private (возможно, также static) функций в классе для служебных функций, используемых в моем классе, которым не требуется доступ к данным экземпляра по сравнению с использованием глобальных функций static в моем * 1004? * файл, который реализует класс?
Первое звучит чище для меня, но второе действительно имеет больше смысла, так как эти функции даже не нужно упоминать в файле .h.

Ответы [ 4 ]

12 голосов
/ 27 июля 2011

Я бы не помещал частные статические функции в заголовочный файл, если они не нужны.Они просто загрязняют заголовочный файл и добавляют больше работы.

Но частные статические функции могут понадобиться, когда у вас есть метод / функция шаблона в классе и вы хотите использовать в нем эту вспомогательную функцию.

Еще одна причина для использования частных статических функций вместо глобальныхСтатические функции в том, что они могут получить доступ к закрытым членам класса (переменные, функции).

5 голосов
/ 27 июля 2011

Если данная функция относится к вашему class, то вы правы.Вы должны сделать их private static в вашем class теле.

[Примечание: если эти служебные функции вообще не связаны, тогда вы можете подумать о том, чтобы заключить их в namespace или другой класс Utilоставьте его в пределах видимости файла.]

2 голосов
/ 27 июля 2011

Просто сделайте из них файлово-статические функции. Если они не имеют никакого отношения к классу, не помещайте их туда.

0 голосов
/ 27 июля 2011

Если приватная функция не изменяет членов класса, она не имеет никаких преимуществ перед глобальной статической.Нахождение внутри или вне класса не имеет значения

...