final, specyfikator
Możesz użyć słowa kluczowego final, aby wyznaczyć funkcje wirtualne, które nie mogą zostać zastąpione w klasie pochodnej.Możesz również użyć go do wyznaczenia klas, które nie mogą być dziedziczone.
function-declaration final;
class class-name final base-classes
Uwagi
Słowo kluczowe final jest zależne od kontekstu i ma specjalne znaczenie tylko wtedy, gdy jest używane po deklaracji funkcji lub nazwie klasy; w przeciwnym wypadku nie jest zarezerwowanym słowem kluczowym.
Gdy final jest używane w deklaracji klasy, base-classes jest opcjonalnym elementem deklaracji.
Przykład
W poniższym przykładzie użyto słowa kluczowego final, aby określić, że funkcja wirtualna nie może zostać zastąpiona.
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, w jaki funkcje członkowskie mogą być zastępowane, zobacz override, specyfikator.
W następnym przykładzie użyto słowa kluczowego final, 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
{
};