final, specyfikator

Ostatnie słowo kluczowe służy do wyznaczania funkcji wirtualnych, których nie można zastąpić w klasie pochodnej. Można go również użyć do wyznaczenia klas, których nie można dziedziczyć.

Składnia

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

Uwagi

final jest uwzględniana kontekstowo i ma specjalne znaczenie tylko wtedy, gdy jest używana po deklaracji funkcji lub nazwie klasy; w przeciwnym razie nie jest to zastrzeżone słowo kluczowe.

Gdy final jest używany w deklaracjach klas, base-classes jest opcjonalną częścią deklaracji.

Przykład

W poniższym przykładzie użyto ostatniego słowa kluczowego, aby określić, że nie można zastąpić funkcji wirtualnej.

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

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

Aby uzyskać informacje o sposobie określania, że funkcje składowe można zastąpić, zobacz zastępowanie specyfikatora.

W następnym przykładzie użyto końcowego słowa kluczowego, aby określić, że nie można dziedziczyć klasy.

class BaseClass final
{
};

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

Zobacz też

Słowa kluczowe
override, specyfikator