Przeglądałem przez Internet, szukając odpowiedzi na moje pytania, ale nie mogłem znaleźć żadnych, więc oto jestem.Czysta funkcja wirtualna i przesłanianie (C++)
Czy to prawidłowe określenie nadpisanie do mojej funkcji, która pochodzi z czystym wirtualna:
class baseClass
{
public:
virtual void myFunction() = 0;
}
class derivedClass : public baseClass
{
public:
virtual void myFunction() override;
}
jest to prawidłowe?
Moje drugie pytanie brzmi: Czy muszę podać wirtualne w klasie pochodnej dla mojej funkcji, mimo że żadna klasa nie odziedziczy po mojej klasie pochodnej (będzie ona ostateczna)?
Dziękuję bardzo za odpowiedzi!
OK, dziękuję za udział. Jeszcze jedno pytanie: dlaczego kompilator nie narzeka, gdy nie określam przesłonięcia w klasie pochodnej? – Silouane
Specyfikator zastąpienia został wprowadzony w C++ 11. Zapobiega on omyłkowemu dodawaniu nowych funkcji, które Twoim zdaniem są przesłonięte.Na przykład jeśli błędnie zmienisz typ zwracania w DerivedClass, kompilator wystąpi z błędem, jeśli użyjesz specyfikatora przesłonięcia. Jeśli nie używasz specyfikatora przesłonięcia, to w końcu deklarujesz nową metodę wirtualną. – Sambuca
Mam to, dziękuję jeszcze raz. – Silouane