Кто строит виртуальную базу в C++
При виртуальном наследовании промежуточные классы не создают общую часть сами по себе.
Самый производный класс обязан
передать аргументы конструктору виртуальной
базы в своем списке инициализации. Вызовы
из Left и Right к тому
же конструктору в этой ситуации не
выполняются. Запишем цепочку и выведем
слово из конструктора Base:
┌pPathX="main.cpp"
#include <iostream>
class Base {
public:
explicit Base(const char* word) {
std::cout << word << "\n";
}
};
class Left : virtual public Base {
public:
Left() : Base("left") {}
};
class Right : virtual public Base {
public:
Right() : Base("right") {}
};
class Bottom : public Left, public Right {
public:
Bottom() : Base("shared") {}
};
int main() {
Bottom item;
return 0;
}
Задайте конструктор Base, печатающий
переданную строку. В Bottom вызовите
его со словом root и убедитесь,
что на экране одна строка.