Почему элементы данных являются частными по умолчанию в C++?

Есть ли какая-либо конкретная причина, что все элементы данных в классе являются частными по умолчанию в C++?

8
задан cs01 28 March 2017 в 16:16
поделиться

5 ответов

Потому что лучше быть правильно инкапсулированным и открывать только то, что необходимо, в отличие от того, чтобы все было открыто по умолчанию и закрывать его.

Инкапсуляция (сокрытие информации) - это хорошо , и, как и в случае с безопасностью (например, блокировка сетевых служб), значение по умолчанию должно быть скорее хорошим, чем плохим.

16
ответ дан 5 December 2019 в 04:37
поделиться

Причина в том, что открытые части класса должны быть явно опубликованы.

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

Спецификаторы доступа C ++ применяются к диапазону, который следует за ними - я думаю, что метод Java и C #, когда каждый член указывает видимость члена (с разумным значением по умолчанию), является предпочтительным.

4
ответ дан 5 December 2019 в 04:37
поделиться

Одним словом, инкапсуляция. Цель состоит в том, чтобы частные детали реализации (такие как элементы данных) были частными. Только явно публичный API доступен для клиентов класса.

3
ответ дан 5 December 2019 в 04:37
поделиться

Дизайн и развитие C ++

2.10 Модель защиты

Перед тем, как начать работу над C с классами, я работал с операционными системами . Идеи защиты компьютера Cambridge CAP и подобных систем - а не любая работа в языках программирования - вдохновили механизмы защиты C ++. Класс является единицей защиты, и фундаментальное правило состоит в том, что вы не можете предоставить себе доступ к классу; только объявления, помещенные в объявление класса (предположительно его владельцем) , могут предоставить доступ. По умолчанию вся информация является частной.

18
ответ дан 5 December 2019 в 04:37
поделиться

Потому что в противном случае не было бы никакой разницы между классом и struct ?

6
ответ дан 5 December 2019 в 04:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: