Heim >Backend-Entwicklung >C++ >Wie können abgeleitete Klassen private rein virtuelle Funktionen in C überschreiben?

Wie können abgeleitete Klassen private rein virtuelle Funktionen in C überschreiben?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-08 06:20:02842Durchsuche

How Can Derived Classes Override Private Pure Virtual Functions in C  ?

Private rein virtuelle Funktionen in C

In C kann es rätselhaft sein, auf private rein virtuelle Funktionen wie in der Engine-Klasse zu stoßen. Wie aus der Frage hervorgeht, wird von abgeleiteten Klassen erwartet, dass sie Implementierungen für diese Funktionen bereitstellen, aber wie können sie dazu auf private Mitglieder der Basisklasse zugreifen?

Die Frage beruht jedoch auf einem Missverständnis: Abgeleitete Klassen können dies tatsächlich überschreiben private rein virtuelle Funktionen. Sie können sie möglicherweise nicht direkt aufrufen, aber sie können ihre eigenen Implementierungen bereitstellen. Dies ermöglicht eine „Trennung der Spezifikation der Schnittstelle von der Spezifikation des anpassbaren Verhaltens der Implementierung“. (Herb Sutter, „Virtualität“)

Im gegebenen Beispiel besteht die öffentliche Schnittstelle aus nicht virtuellen überladenen Funktionen, die nicht öffentliche, nicht überladene virtuelle Funktionen aufrufen. Dieses Muster, bekannt als „Public Overloaded Non-Virtuals Call Protected Non-Overloaded Virtuals“, befasst sich mit dem Problem des „Versteckens“ virtueller Funktionen in abgeleiteten Klassen.

Betrachten Sie den hypothetischen Fall, in dem SetStateBool und SetStateInt reine virtuelle Funktionen waren mit einer nicht virtuellen Schnittstelle in der Basisklasse. Abgeleitete Klassen müssten bestimmte Überladungen davor schützen, von den neuen Implementierungen ausgeblendet zu werden. Dazu müssten sie die using-Deklaration verwenden.

Durch die Verwendung privater virtueller Funktionen können abgeleitete Klassen diese Funktionen jedoch überschreiben, ohne sich Gedanken darüber machen zu müssen, dass andere Methoden in der Basisklasse ausgeblendet werden. Dies vereinfacht den Prozess der Anpassung des Verhaltens virtueller Funktionen in abgeleiteten Klassen.

Das obige ist der detaillierte Inhalt vonWie können abgeleitete Klassen private rein virtuelle Funktionen in C überschreiben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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