Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
494 of 696 menu
◀ ▶

Кто строит виртуальную базу в 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 и убедитесь, что на экране одна строка.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить