происходит переопределение?#include<iostream>
using namespace std;
class Base {
public:
void show() { cout << "Hello" << endl; }
};
class A : virtual public Base {
};
class D : virtual public Base {
};
class A_D : public A, public D {
};
int main() {
A_D object;
object.show();
return 0;
}
Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!
виртуальное наследование используется для того, чтобы избежать проблемы неоднозначности. Почитайте про проблему ромбовидного наследования
Такая конструкция приведет к тому, что во всей иерархии сконструируется только один объект класса Base. И у этого объекта вызовется функци
Какой-то недоделанный пример во-первых он не будет работать во-вторых вообще непонятно что тебе тут непонятно
Непонятно то,что при виртуальном наследовании значит virtual,оно же не так как с функциями работает.
Это значит что базовый класс существует в единственном экземпляре во всей ветке зависимостей, в независимости от того, сколько раз оно объявлено
Нет, оно тут значит совсем другое
На самом деле не совсем верная формулировка уточню: Это значит что данный наследующий класс не требует от своего данного предка присутствия в виде индивидуального подъобьекта внутри экземпляра объекта. В случае же невиртуального (обычного) наследования каждому наследнику гарантируется индивидуальный экземпляр подъобьекта предка
https://i.imgur.com/KHytlWJ.png
Это именно виртуальное наследование А и Б от Бейс
Обсуждают сегодня