Wikipedia Cytat:
Korekcja specjalny identyfikator oznacza, że kompilator sprawdzi klasę bazową (es) aby sprawdzić, czy istnieje wirtualna funkcja z tą dokładną sygnaturą. A jeśli nie, kompilator będzie się mylił.
http://en.wikipedia.org/wiki/C%2B%2B11#Explicit_overrides_and_final
Edit (próbując poprawić nieco odpowiedź):
deklarujących metodę jako „ręcznym” oznacza, że ta metoda przeznaczone przepisać (wirtualny) metoda na klasa podstawowa. Metoda nadrzędna musi mieć tę samą sygnaturę (przynajmniej dla parametrów wejściowych), co metoda, którą zamierza przepisać.
Dlaczego jest to konieczne? Cóż, zapobiega się następującym dwóm typowym błędom:
jeden błąd tworzy typ w nowej metodzie. Kompilator, nieświadomy, że zamierza napisać poprzednią metodę, po prostu dodaje ją do klasy jako nową metodę. Problem polega na tym, że stara metoda wciąż istnieje, nowa jest dodawana jako przeciążenie. W takim przypadku wszystkie połączenia w kierunku starej metody będą działać tak, jak poprzednio, bez żadnych zmian w zachowaniu (które byłyby celem nadpisywania).
zapomina się zadeklarować metodę w superklasie jako "wirtualną", ale wciąż próbuje ponownie zapisać ją w podklasie. Chociaż zostanie to najwyraźniej zaakceptowane, zachowanie nie będzie dokładnie takie, jak było to zamierzone: metoda nie jest wirtualna, więc dostęp przez wskaźniki do superklasy zakończy się wywołaniem starej (nadklasy) metody zamiast nowej (podklasy) metody.
Dodanie „override” wyraźnie disambiguates to: przez to, jedna mówi kompilatorowi, że trzy rzeczy są spodziewa:
- istnieje metoda o tej samej nazwie w nadklasą
- to metoda w nadklasie jest zadeklarowana jako "wirtualna" (co oznacza, że ma być przepisana)
- metoda w nadklasie ma ten sam (wejściowy *) podpis jak metoda w podklasie (metoda przepisywania)
Jeśli którakolwiek z tych wartości jest nieprawidłowa, zostanie zgłoszony błąd.
* uwaga: parametr wyjściowy jest czasami inny, ale powiązany. Przeczytaj o przekształceniach kowariantnych i przeciwstawnych, jeśli są zainteresowane.
Tak. –
To nie jest jednak podwójne sprawdzenie. To jedyny czek. –
@Nikos dobry punkt;), naprawiony – aiao