Heim > Backend-Entwicklung > C++ > Können reine virtuelle Funktionen in C implementiert werden?

Können reine virtuelle Funktionen in C implementiert werden?

Susan Sarandon
Freigeben: 2024-12-18 12:13:15
Original
872 Leute haben es durchsucht

Can Pure Virtual Functions Have Implementations in C  ?

Reine virtuelle Funktionen: Enthüllung von Implementierungsmöglichkeiten

Das Konzept rein virtueller Funktionen wird häufig mit dem Fehlen einer Implementierung innerhalb der Basisklasse in Verbindung gebracht . Es mag jedoch überraschen, dass rein virtuelle Funktionen tatsächlich Implementierungen haben können.

In C wird eine rein virtuelle Funktion mit „= 0“ ohne Funktionskörper innerhalb der Basisklasse deklariert. Allerdings darf die Basisklasse weiterhin eine Implementierung für die rein virtuelle Funktion definieren. Auf diese Implementierung können externe Klassen nicht direkt zugreifen, sie kann jedoch explizit von einer abgeleiteten Klasse mit einem vollständig gültigen Namen aufgerufen werden.

Betrachten Sie den folgenden Codeausschnitt:

class A {
public:
    virtual void f() = 0;
};

void A::f() {
    cout << "Test" << endl;
}
Nach dem Login kopieren

In diesem Beispiel Die Klasse A definiert eine rein virtuelle Funktion f(), stellt aber auch eine Implementierung bereit. Die abgeleitete Klasse B kann dann unter Verwendung des vollständig gültigen Namens A::f() auf diese Basisklassenimplementierung zugreifen:

class B : public A {

    virtual void f() {
        // class B doesn't have anything special to do for f()
        //  so we'll call A's

        // note that A's declaration of f() would have to be public or protected to avoid a compile time problem

        A::f();
    }

};
Nach dem Login kopieren

Die Bereitstellung einer Implementierung für eine rein virtuelle Funktion ermöglicht ein Standardverhalten, das durch überschrieben werden kann abgeleitete Klassen. Es ermöglicht auch den expliziten Aufruf eines konsistenten Funktionssatzes bei Bedarf, selbst in Fällen, in denen abgeleitete Klassen ihre eigene Implementierung definieren.

Diese Strategie wird häufig in Situationen eingesetzt, in denen ein angemessenes Standardverhalten gewünscht, aber unerlässlich ist um dieses Verhalten explizit aufzurufen. Darüber hinaus kann es nützlich sein, wenn von abgeleiteten Klassen erwartet wird, dass sie ihre eigene Arbeit ausführen, aber auch von einem gemeinsamen Satz an Funktionen profitieren.

Es ist wichtig zu beachten, dass die Bereitstellung einer Implementierung für eine rein virtuelle Funktion nicht üblich ist Praxis in C . Es handelt sich jedoch um eine gültige Option, die in bestimmten Szenarien Flexibilität und Anpassung bieten kann.

Das obige ist der detaillierte Inhalt vonKönnen reine virtuelle Funktionen in C implementiert werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage