Почему определение частных членов ниже открытых членов в C ++? - PullRequest
25 голосов
/ 27 апреля 2009

В C ++ иногда в определении класса публичные члены объявляются сначала, а приватные позже. Но переменные или члены-данные обычно являются закрытыми и используются общедоступными методами. Таким образом, в этом случае переменные используются, но даже не объявлены. Таким образом, код становится трудным для понимания. Но я нашел известных программистов, сайты или книги, чтобы объявить о частных членах позже. Кто-нибудь знает в чем причина?

Ответы [ 6 ]

34 голосов
/ 27 апреля 2009

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

Кроме того, в заголовочных файлах я обычно просто объявляю функции-члены, а не определяю их, поэтому в любом случае я не обращаюсь к каким-либо закрытым членам.

24 голосов
/ 27 апреля 2009

Мы читаем текст сверху вниз, поэтому самая актуальная информация должна быть сверху. В определении класса это открытый интерфейс.

6 голосов
/ 27 апреля 2009

Закрытые члены и реализация должны быть скрыты от заголовочного файла. Поместить определения приватных членов внизу - это быстрый способ сделать это. Возможно, лучше использовать идиому Pimpl и скрыть приватную часть вашего класса во внутренней структуре.

2 голосов
/ 27 апреля 2009

Мы как противоположности: Мой вопрос

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

2 голосов
/ 27 апреля 2009

Обычно частные члены не имеют значения. Если я смотрю на класс, чтобы определить, как использовать его где-то еще в коде, мне наплевать на его внутренности, поэтому поместите закрытые члены внизу, поскольку мне не нужно знать о них. Если я изменяю класс, я найду приватных членов и узнаю, что они будут внизу, вместо того, чтобы просматривать весь класс.

0 голосов
/ 16 апреля 2014

Согласовано. Частные члены должны быть объявлены внизу. Единственная веская причина объявить закрытые члены первыми, которые я нашел, - это когда функция должна получить или вернуть пользовательский тип данных, например: vector. Компилятор спросит вас, что это за данные.

Но даже в этом случае я предпочитаю делать:

{ личное: /// консультирование ofc theres больше личного ниже! ранее объявить просто типа

общественность:

частное:

};

...