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

Частные структуры С++

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

Это означает, что члены структуры могут быть частными. Мой вопрос: у вас есть члены частной структуры? И если вы можете, в чем цель использования частных членов? Как вы могли бы получить к ним доступ?

4b9b3361

Ответ 1

Структуры да могут иметь закрытых членов, вам просто нужно использовать спецификатор доступа для того же самого.

struct Mystruct
{
    private:
       m_data;

};

Только различие между структурой и классом:

  • Спецификатор доступа по умолчанию является приватным для класса и public для struct
  • inheritance defaults для private для класса и public для struct

Как вы можете получить к ним доступ?
Так же, как вы получаете доступ к закрытым членам класса. i.e: они могут быть доступны только внутри функций-членов структур, а не в производной структуре и т.д.

Ответ 2

Единственное различие между struct и class - доступ по умолчанию (за исключением некоторых странных ситуаций с шаблонами, см. комментарии Alf ниже). Это означает, что вы можете получить доступ к закрытым членам так же, как в классе:

struct foo {
  int get_X() { return x; }
  void set_X(int x_) { x = x_; }
private:
  int x;
};

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

Ответ 3

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