Запрет наследования класса в C++
Отдельные типы задуманы как конечные звенья иерархии без потомков.
Ключевое слово final после имени класса запрещает
дальнейшее наследование: объявление
class Child : public AppSettings не пройдет
компиляцию. Запишем финальный AppSettings
и создадим его объект:
class AppSettings final {
public:
int timeout = 30;
};
// class ExtendedSettings : public AppSettings { }; // ошибка
Создадим объект класса AppSettings и выведем значение таймаута:
int main() {
AppSettings settings;
std::cout << settings.timeout << "\n";
return 0;
}
Объявите класс AppSettings
с модификатором final.
Попробуйте объявить класс-наследник
от AppSettings и убедитесь,
что код не компилируется.