The Principle Engineer у моей последней компании было правило, что методы private
static
должны быть реализованы как функции в файле реализации, а не как методы класса.Есть ли необходимость в частных статических методах?
Я не помню, были ли исключения из его правила. Я наткнулся на мотивацию для моей текущей работы: Если аргументы или тип возвращаемого значения рассматриваемой функции являются объектами, для которых требуется включение файла определения в заголовок, это может вызвать ненужные трудности.
Этого достаточно, чтобы направить меня когда-либо, используя private
static
метод снова, но прежде чем я написал их, я хотел бы знать, если кто-нибудь знает о нише они заполняют, что функция файл реализации не будет?
EDIT:
Примером может быть полезным здесь. Скажем, это начало декларации class Foo
, что есть и другие методы, которые будут вызываться void foo()
в файле реализации:
class Foo {
static void foo();
Так foo
доступен только другими методами Foo
. Почему бы мне просто не определить foo
в файле реализации и сохранить его из заголовка вместе?
@Downvoter Есть ли причина для голосования? Очевидно, что если вы просто предоставляете обязательное голосование по вопросам [tag: C++], нет необходимости отвечать. –
Доступ к частным статическим данным (например, количеству созданных экземпляров) потребует метода класса, а не бесплатной функции. –
Итак, как бы это отличалось, если метод был «public» или «protected»? Правило, указанное в вашем вопросе, не объясняет, почему «частный» получает особое обращение. –