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

Запрет переопределения метода в C++

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

Слово final после виртуального метода в базе запрещает переопределение в любых потомках. Запишем getVersion с virtual и final в User:

class User { public: virtual int getVersion() final { return 1; } }; class Employee : public User { public: // int getVersion() override; // ошибка: метод final };

Создадим объект класса User и выведем номер версии:

int main() { User user; std::cout << user.getVersion() << "\n"; return 0; }

Объявите в User виртуальный метод build с final и попробуйте переопределить его в Employee - убедитесь, что код не компилируется.

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