Heim > Backend-Entwicklung > C++ > Hauptteil

Wie können abgeleitete Klassen private rein virtuelle Funktionen in einer Basisklasse implementieren?

Mary-Kate Olsen
Freigeben: 2024-11-04 06:45:02
Original
150 Leute haben es durchsucht

How Can Derived Classes Implement Private Pure Virtual Functions in a Base Class?

Reine virtuelle Funktionen im privaten Bereich

Wenn Sie auf Code mit privaten, rein virtuellen Funktionen in einer Basisklasse stoßen, wie im bereitgestellten Beispiel :

class Engine
{
public:
    void SetState( int var, bool val );
    void SetState( int var, int val );

private:
    virtual void SetStateBool( int var, bool val ) = 0;    
    virtual void SetStateInt ( int var, int val ) = 0;    
};
Nach dem Login kopieren

Es kann so aussehen, als ob abgeleitete Klassen nicht auf diese Funktionen zugreifen können, um sie zu implementieren. Abgeleitete Klassen können jedoch private virtuelle Funktionen überschreiben und ihre eigenen Implementierungen bereitstellen. Dies ist nicht mit der Unfähigkeit abgeleiteter Klassenmethoden zu verwechseln, virtuelle Funktionen aus der Basisklasse aufzurufen.

Trennung von Schnittstelle und Implementierung

Private virtuelle Funktionen ermöglichen die Trennung der Schnittstellenspezifikation von der Implementierung, die in abgeleiteten Klassen angepasst werden kann. Die öffentliche Schnittstelle besteht aus einer Reihe überlasteter nicht virtueller Funktionen, die private, nicht überlastete virtuelle Funktionen aufrufen. Diese Redewendung, bekannt als „Public Overloaded Non-Virtuals Call Protected Non-Overloaded Virtuals“, hilft bei der Verwaltung der Ausblendungsregel.

Verhindern des Ausblendens

In einem Szenario, in dem die Da die öffentliche Schnittstelle nicht virtuell und die virtuelle Implementierung privat ist, kann der Autor der abgeleiteten Klasse einfach seine eigene Implementierung der virtuellen Funktionen bereitstellen, ohne sich Gedanken über das Ausblenden der Mitglieder der Basisklasse machen zu müssen. Zum Beispiel:

class MyTurbochargedV8 : public Engine
{
private:
    void SetStateInt(int var, int val )  {/* new implementation */}
};
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie können abgeleitete Klassen private rein virtuelle Funktionen in einer Basisklasse implementieren?. 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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!