Подтвердить что ты не робот

Почему определение частных членов ниже открытых членов на С++?

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

Ответ 3

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

Ответ 4

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

Ответ 5

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

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

Ответ 6

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

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

{  private:///advicing of the theres более частным ниже!  ранее объявляют только тип

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

частные:

};