We recommend using Visual Studio 2017
This documentation is archived and is not being maintained.

final Identifier

You can use the final identifier to designate virtual functions that cannot be overridden in a derived class. You can also use it to designate classes that cannot be inherited.

function-declaration final;
class class-name final base-classes

final is context-sensitive and has special meaning only when it's used after a function declaration or class name; otherwise, it's not a reserved keyword.

When final is used in class declarations, base-classes is an optional part of the declaration.

The following example uses the final identifier to specify that a virtual function cannot be overridden.

class BaseClass
    virtual void func() final;

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

For information about how to specify that member functions can be overridden, see override Identifier.

The next example uses the final identifier to specify that a class cannot be inherited.

class BaseClass final 

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


Other Resources