Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
1 / 1 / 0
Регистрация: 21.10.2015
Сообщений: 2
1

Почему при множественном наследовании в производном классе оказывется несколько экземпляров общего базового класса

13.10.2017, 14:59. Просмотров 404. Ответов 1

Я не очень хорошо знаю плюсы, но я разбираюсь. Учусь, и мне хотелось бы иногда получать ответы на глупые мои вопросы. Кто может помочь?

Например:
Имеется вот такая задача 1:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
struct B { int n; };
 
struct X : public B {};
 
struct Y : public B {};
 
struct Z : public B {};
 
struct A : X, Y, Z {
    void f()  {
        X::n = 1;
        Y::n = 2;
        Z::n = 3;
        cout << X::n << Y::n << Z::n << endl;
    }
};
Что мы увидим?
мой ответ до компиляции и проверки:
333
Ответ после компиляции:
123

Почему??? Ведь если Мы создаем класс А, то мы имеем как бы общую память для всех классов от класса В.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.10.2017, 14:59
Ответы с готовыми решениями:

Почему при переопределении виртуального метода в производном классе выводится метод базового?
Всем добра! Помогите разобраться почему при переопределении виртуального метода в производном...

Инициализация в производном классе переменной из базового класса
Привет подскажите пожалуйста, как правильно реализовать такое. Есть член переменная базового...

В производном классе вызов приватного метода базового класса
Добрый вечер. Помогите понять одну вещь. Имеется такое наследование: class test1 { public: ...

Как в производном классе спрятать методы из базового класса?
Как в производном классе, спрятать методы из базового класса. То есть при создании экземпляра...

1
13534 / 7187 / 1723
Регистрация: 30.01.2014
Сообщений: 12,021
13.10.2017, 15:02 2
Цитата Сообщение от taylan Посмотреть сообщение
Почему??? Ведь если Мы создаем класс А, то мы имеем как бы общую память для всех классов от класса В.
Нет, базовых подобъектов типа B тут будет три штуки.
Чтобы был один - см. виртуальное наследование.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.10.2017, 15:02

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

Почему при наследовании метода из базового класса получаются одинаковые значения?
столкнулся с такой проблемой. Есть два класса: Player и Dealer, оба наследуют от класса Hand,...

Вызов метода базового класса игнорируя переопределенный метод в производном классе
Как вызвать метод базового класса игнорируя переопределенный метод в производном классе. PS...

Как сделать компоненты базового класса доступными в производном классе, но недоступными вне классов?
Как сделать компоненты базового класса доступными в производном классе, но недоступными вне классов?

Доступ к переменным базового класса при наследовании
Есть следующий код class Base { protected: int x; Base* enemy; public: Base() {}

Доступ к объекту базового класса при закрытом наследовании
Есть класс Pair из стандартной библиотеки. Он у меня содержит 2 массива valarray. От класса Pair я...

Доступ к открытым методам базового класса при частном наследовании
Всем, привет, возникла проблема. Есть классы 1-&gt;2-&gt;3. Класс 2 явл наследником 1, а 3 класс является...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.