Na przykład:Czy jest jakiś sens używania `override` podczas przesłonięcia czystej funkcji wirtualnej?
class Base {
virtual void my_function() = 0;
};
class Derived : Base {
void my_function() override;
};
Z tego co czytałem, słowo override
stosowany jest, aby upewnić się, że mamy prawidłowy podpis do funkcji, które są nadrzędne, a wydaje się, że jego jedyne zastosowanie.
Jednak w przypadku czystej funkcji wirtualnej kompilator zgłosiłby błąd, jeśli użylibyśmy niepoprawnej sygnatury w klasie pochodnej (lub klasie bazowej, w zależności od tego, jak widzimy rzeczy). Czy jest jakiś sens dodania override
na końcu deklaracji ?
Należy pamiętać, że abstrakcyjność * propaguje *. Jeśli podasz błędną sygnaturę w klasie "Pochodna", wówczas klasa "Pochodna" również staje się abstrakcyjna. To może nie zostać wykryte we właściwym miejscu bez słowa kluczowego 'override'. –
Zapewnia to, że jeśli klasa podstawowa zmieni się w sposób niekompatybilny z asercją 'override', twój kod się nie skompiluje. – EJP
"Pingowanie celowo programów pedagogicznych propaguje preferowane praktyki programistyczne" - T.J.Elgan – coderatchet