Während man allgemein davon ausgeht, dass reine virtuelle Funktionen keine Implementierungen haben, ermöglichen bestimmte Szenarien ihre Definition innerhalb der Basisklasse.
In dem von Ihnen bereitgestellten Codeausschnitt:
class A { public: virtual void f() = 0; }; void A::f() { cout << "Test" << endl; }
Die Funktion A::f() ist deklariert als rein virtuell mit einer Umsetzung. Dies ist in der Sprache C zulässig, wirft jedoch Fragen zu seinem Zweck auf.
Rein virtuelle Funktionen mit Implementierungen dienen einem bestimmten Zweck. Durch die Bereitstellung einer Standardimplementierung in der Basisklasse können abgeleitete Klassen:
Hier ist ein Beispiel:
class B : public A { virtual void f() { A::f(); // Calls the base class implementation } };
Die Verwendung rein virtueller Funktionen mit Implementierungen ist ungewöhnlich, kann aber in Szenarien von Vorteil sein wobei:
Obwohl die Bereitstellung von Implementierungen für rein virtuelle Funktionen in der Basisklasse in der C-Sprache zulässig ist, ist dies keine gängige Praxis. Wenn Sie den Zweck und die Auswirkungen dieser Technik verstehen, können Sie sie bei Bedarf einsetzen.
Das obige ist der detaillierte Inhalt vonWann und warum sollten Sie eine rein virtuelle Funktion in C implementieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!