2016-10-15 1 views
-2

Zum Beispiel hat die Klasse Plant eine virtual void info() Methode. Die Klasse flower stammt von Plant.
Ist Plant verpflichtet, eine eigene Implementierung der Methode zu haben?Müssen abgeleitete Klassen ihre eigene Version einer virtuellen Funktion haben, die auf der Basis deklariert ist?

+1

Mögliches Duplikat von [reine virtuelle Funktion mit Implementierung] (http://stackoverflow.com/questions/2089083/pure-virtual-function-with-implementation) – gsamaras

+0

Fragen Sie, ob Ihr Compiler mit der Annahme Ihres Codes standardskonform ist ? – juanchopanza

Antwort

0

Wenn die Funktion pure virtual ist, wird virtual void info() = 0; deklariert, dann Nein. Sonst Ja.

0

Nr

Basisklassen nicht ihre eigene Implementierung einer virtuellen Methode benötigen, die von einem dervided Klasse implementiert wird. Sie können jedoch eine Implementierung haben.

Um die Implementierung in der Basisklasse zu überspringen, machen Sie es einfach rein virtuell, z.

virtual void info() = 0; 

In diesem Fall alle abgeleiteten Klassen - oder um genauer zu sein: - die virtuelle Methode implementieren muss jede abgeleitete Klasse, die Sie eine Instanz haben wollen.

+0

Aber die Frage ist anders herum, fürchte ich. Ich sprach über die Deklaration der virtuellen Funktion auf der Basisklasse und nicht auf der abgeleiteten. –

Verwandte Themen