final, specyfikator
Można użyć final słowo kluczowe, aby wyznaczyć funkcje wirtualnych, które nie mogą być przesłaniane w klasie pochodnej.Umożliwia także to do wyznaczenia klas, które nie mogą być dziedziczone.
function-declaration final;
class class-name final base-classes
Uwagi
finaljest zależne od kontekstu i ma specjalne znaczenie tylko wtedy, gdy jest używany po deklaracji funkcji lub nazwy klasy; w przeciwnym razie nie jest zastrzeżonym słowem kluczowym.
Gdy final jest używany w deklaracji klasy base-classes jest opcjonalnym składnikiem zgłoszenia.
Przykład
W poniższym przykładzie użyto final słowo kluczowe, aby określić, że nie można zastąpić funkcję wirtualną.
class BaseClass
{
virtual void func() final;
};
class DerivedClass: public BaseClass
{
virtual void func(); // compiler error: attempting to
// override a final function
};
Aby uzyskać informacje dotyczące sposobu określania funkcji elementów członkowskich może być zastąpiona, zobacz override, specyfikator.
W następnym przykładzie użyto final słowo kluczowe, aby określić, że klasa nie może być dziedziczona.
class BaseClass final
{
};
class DerivedClass: public BaseClass // compiler error: BaseClass is
// marked as non-inheritable
{
};