Programowanie obiektowe, C++
Zabranianie dziedziczenia i przesłaniania
[lekcja] 14. Zabranianie dziedziczenia i przesłaniania, czyli słowo final (C++11)Wprowadzenie
Czasem zdarza się, że chcemy, by jakaś metoda wirtualna od pewnego miejsca hierarchii dziedziczenia pozostawała niezmieniona, albo chcemy, by po danej klasie nie można było dziedziczyć i w ten sposób zamknąć od dołu hierarchię. W C++11 to możliwe i służy do tego słowo
final.
Słowo final nie jest kluczowe, ani zarezerwowane. Ma swoje specjalne znaczenie tylko w dalej opisanych przypadkach.
|
Klasa finalna
Jeśli chcemy utworzyć klasę "finalną", wystarczy, że umieścimy słowo
final zaraz, po nazwie klasy
Próba dziedziczenia po takiej klasie zakończy się błędem kompilacji. Klasa pochodna również może być finalna
class X
{ };
class Y final
: X
{ };
Metoda finalna
Aby oznaczyć metodę wirtualną jako finalną, wystarczy dopisać na koniec deklaracji
final (tam, gdzie
const w metodach stałych). Próba przesłonięcia takiej metody spowoduje błąd kompilacji
class C
{
virtual void f() final
{ }
};
Wszystkie teksty są chronione prawami autorskimi. Kopiowanie lub rozpowszechnianie treści poza niniejszym serwisem
jest zabronione.
Powyższe ograniczenie nie dotyczy autora opracowania, któremu przysługuje prawo do rozpowszechniania własnego tekstu wedle własnego uznania.