Спецификатор final

Ключевое слово final можно использовать для назначения виртуальных функций, которые невозможно переопределить в производном классе. Можно также использовать это ключевое слово для назначения классов, которые невозможно наследовать.

function-declaration final;

class class-name final base-classes

Заметки

Ключевое слово final зависит от контекста и имеет специальное значение, только если используется после объявления функции или имени класса; в противном случае оно не является зарезервированным ключевым словом.

Если final используется в объявлениях класса, base-classes является необязательной частью объявления.

Пример

В следующем примере ключевое слово final используется для указания невозможности переопределения виртуальной функции.

class BaseClass
{
    virtual void func() final;
};

class DerivedClass: public BaseClass
{
    virtual void func(); // compiler error: attempting to 
                         // override a final function
};

Дополнительные сведения о том, как указать, что функции-члены можно переопределить, см. в разделе Спецификатор override.

В следующем примере ключевое слово final используется для указания невозможности наследования класса.

class BaseClass final 
{
};

class DerivedClass: public BaseClass // compiler error: BaseClass is 
                                     // marked as non-inheritable
{
};

См. также

Ссылки

Ключевые слова в C++

Спецификатор override

Другие ресурсы

C++ Type Names