У меня есть 2 базовых класса (B1 и B2), которые получены из общего базового класса (B), где они имеют общую переменную (пусть: int x;
из базы B), на 1-й базе x=0
, на 2-й базе x=10
(значения по умолчанию приведены в конструкторах B1, B2).Множественное наследование
Визуально:
class B
{
int x;
protected:
B(int x) : x{x}{}
};
class B1 : public B
{
protected:
B1() : B(0){}
};
class B2 : public B
{
protected:
B2() : B(10){}
};
Теперь, если я получить еще один класс:
class D : virtual public B1, virtual public B2
{
public:
D() : B1{}, B2{}{}
};
Вот только одна копия х будет доступен как в виртуальной концепции, теперь, если я пытаюсь получить доступ к значению х с объектом производного класса, экземпляр x которого я получу в O/p (x=0
или x=10
), и почему?
Показать фактический код. – Brian
Я верю, что вы не можете создавать экземпляры класса B1 и B2, потому что они абстрактны из-за виртуального наследования .. Для получения дополнительной информации посетите: http://www.cprogramming.com/tutorial/virtual_inheritance.html –
@ReyRajesh Что нужно делать виртуальному наследованию с абстрактностью (или нет) класса? –