Где хранятся закрытые данные базового класса при обращении к ним через производный класс (C++)? Допустим есть базовый класс:class A
{
public:
int geti();
void seti(int);
private:
int i;
};
int A::geti()
{
return i;
}
void A::seti(int n)
{
i = n;
}
И есть производный от него класс:class B: public A
{
//содержимое В не важно
};
Допустим в main() есть следующий код:B ob;
ob.seti(10);
cout<Вопрос: так как i - закрытый член базового класса, в производном классе его нет. Тогда куда записывается 10 в строке ob.seti(10)? Пример взят из книги Шилдта "Самоучитель С++", но ответа на свой вопрос я не нашел

21 Авг 2019 в 07:08
138 +1
2
Ответы
1

Когда вы вызываете метод seti(10) для объекта ob класса B, в действительности вызывается метод seti(int n) из базового класса A, так как класс B унаследовал этот метод. При этом значение 10 присваивается закрытому члену i базового класса A. Таким образом, значение 10 хранится в члене i базового класса A, даже если обращение к нему происходит через объект производного класса B.

20 Апр в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 89 837 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир