Spécificateur final
Vous pouvez utiliser le mot clé final pour désigner les fonctions virtuelles qui ne peuvent pas être remplacées dans une classe dérivée. Vous pouvez également l'utiliser pour désigner les classes qui ne peuvent pas être héritées.
function-declaration final;
class class-name final base-classes
Notes
final est contextuel et a une signification spéciale uniquement lorsqu'il est utilisé après une déclaration de fonction ou un nom de classe ; sinon, ce n'est pas un mot clé réservé.
Lorsque final est utilisé dans les déclarations de classes, base-classes est une partie facultative de la déclaration.
Exemple
L'exemple suivant utilise le mot clé final pour spécifier qu'une fonction virtuelle ne peut pas être remplacée.
class BaseClass
{
virtual void func() final;
};
class DerivedClass: public BaseClass
{
virtual void func(); // compiler error: attempting to
// override a final function
};
Pour plus d'informations sur la spécification des fonctions membres afin qu'elles puissent être remplacées, consultez Spécificateur de substitution.
L'exemple suivant utilise le mot clé final pour spécifier qu'une classe ne peut pas être héritée.
class BaseClass final
{
};
class DerivedClass: public BaseClass // compiler error: BaseClass is
// marked as non-inheritable
{
};