Наследовавшиеся члены парламента, не занимающие официального поста в C++

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

15
задан shreyasva 20 April 2010 в 15:34
поделиться

5 ответов

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

27
ответ дан 1 December 2019 в 00:49
поделиться

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

4
ответ дан 1 December 2019 в 00:49
поделиться

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

0
ответ дан 1 December 2019 в 00:49
поделиться

Это зависит от типа наследования. Если вы наследуете частным образом, то производный класс НЕ имеет доступа к закрытым членам Base.

Access                      public     protected    private
-----------------------------------------------------------
members of the same class      yes           yes        yes
members of derived classes     yes           yes         no
not members                    yes            no         no
8
ответ дан 1 December 2019 в 00:49
поделиться

Использование шаблона

class MyClass {
  private: int a;
  public: void setA(int x) { a = x; }
  public: int getA() const { return a; }
};

кажется объектно-ориентированным и имеет отправку инкапсуляции.

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

Использование таких методов получения и установки не имеет смысла в C ++.

0
ответ дан 1 December 2019 в 00:49
поделиться
Другие вопросы по тегам:

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