


Was ist der Unterschied zwischen einer virtuellen Funktion und einer rein virtuellen Funktion?
Der Unterschied zwischen virtuellen Funktionen und rein virtuellen Funktionen: 1. Reine virtuelle Funktionen haben nur Definitionen und keine Implementierung, während virtuelle Funktionen sowohl Definitionen als auch Implementierungscodes haben. 2. Eine Klasse, die rein virtuelle Funktionen enthält, kann ihre Objekte nicht definieren, eine Klasse, die virtuelle Funktionen enthält, jedoch schon.
Verwandte Empfehlungen: „C++-Video-Tutorial“
virtuelle Funktion (unrein virtuell)
Die Hauptfunktion virtueller C++-Funktionen ist „Laufzeitpolymorphismus“, und die Implementierung virtueller Funktionen wird in bereitgestellt die übergeordnete Klasse, die Standardfunktionsimplementierungen für Unterklassen bereitstellt.
Unterklassen können die virtuellen Funktionen der übergeordneten Klasse überschreiben, um eine Spezialisierung der Unterklasse zu erreichen.
Das Folgende ist eine virtuelle Funktion in einer übergeordneten Klasse:
class A { public: virtual void ss() { cout<<"我是基类的虚函数"<<endl; } };
Reine virtuelle Funktion (rein virtuell)
Eine Klasse in C++, die rein virtuelle Funktionen enthält, wird als „abstrakte Klasse“ bezeichnet. Abstrakte Klassen können new nicht zum Erstellen von Objekten verwenden. Nur Unterklassen, die diese rein virtuelle Funktion implementieren, können neue Objekte erstellen.
Die rein virtuelle Funktion in C++ ähnelt eher „nur Bereitstellung von Deklarationen, keine Implementierung“, sie stellt eine Einschränkung für Unterklassen dar und ist „Schnittstellenvererbung“.
Rein virtuelle Funktionen in C++ sind auch eine Art „Laufzeitpolymorphismus“.
Zum Beispiel enthält die folgende Klasse reine virtuelle Funktionen, bei denen es sich um eine „abstrakte Klasse“ handelt:
class A { public: virtual void out1(string s)=0; //我是基类的虚函数 };
Zum Beispiel
#include<iostream> #include<string> #include<cstring> #include<cstdlib> #include<algorithm> using namespace std; class a { private: public: a(){ //构造函数用内联函数的形式 } //虚函数 virtual void xhs(){ //这个虚函数必须得在基类中实现 cout<<"我是基类的虚函数"<<endl;//即使是空的虚函数也要在基类中实现 } //派生类中可以不写这个函数,但是派生类对象调用时会调用积累的虚函数 //纯虚函数 virtual void cxhs() =0; //这个纯虚函数不在基类中实现,必须在子类中实现 }; class b:public a { private: public: void xhs(){ //这个是可有可无的 cout<<"我是派生类覆盖基类虚函数的函数"<<endl; } //* //* void cxhs(){ //这个是必须有实现的 cout<<"我是派生类覆盖基类虚函数的函数"<<endl; } //* //* }; //* //* int main() //* //* { //* //* b c; //* //* c.xhs(); //* //调用派生类的 c.cxhs();//调用派生类的 }
Der Unterschied zwischen virtuellen Funktionen und rein virtuellen Funktionen
1) Nur reine virtuelle Funktionen haben Definitionen und keine Implementierungen; Und virtuelle Funktionen haben sowohl Definitionen als auch Implementierungscodes.
Reine virtuelle Funktionen haben im Allgemeinen keinen Code-Implementierungsteil, wie z. B. virtual void print() = 0; 2)
Allgemeine virtuelle Funktionen müssen einen Code-Implementierungsteil haben, sonst tritt ein undefinierter Funktionsfehler auf.
2) Eine Klasse, die rein virtuelle Funktionen enthält, kann ihre Objekte nicht definieren, eine Klasse, die virtuelle Funktionen enthält, jedoch schon.
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen einer virtuellen Funktion und einer rein virtuellen Funktion?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen





Debugging-Methoden für virtuelle Funktionen: Legen Sie Haltepunkte fest, um die Bedingungen zu überprüfen. Verwenden Sie Debugger-Tools, um dynamische Typen und Funktionsstapel zu überprüfen und virtuelle Funktionen neu zu definieren.

Das Überladen von Funktionen in C++ ermöglicht die Definition verschiedener Implementierungen für Funktionen mit demselben Namen und unterschiedlichen Parametern, während virtuelle Funktionen das Überschreiben von Basisklassenfunktionen in abgeleiteten Klassen ermöglichen, um Polymorphismus zu erreichen. Durch das Entwerfen einer virtuellen überladenen Funktion in der Basisklasse kann die abgeleitete Klasse nur die Version einer bestimmten Parameterkombination überladen und so einen flexibleren Polymorphismus bereitstellen, z. B. die Berechnung verschiedener Typen in praktischen Fällen der Form von ihrem Ursprung an.

In C++ interagieren Friend-Funktionen mit virtuellen Funktionen, sodass die Friend-Funktion auf die virtuelle Funktion zugreifen und die Friend-Funktion in der abgeleiteten Klasse aufrufen kann, um auf die privaten Mitglieder der Basisklasse zuzugreifen. Diese Interaktion kann verwendet werden, um auf in der Vererbungshierarchie verborgene Daten zuzugreifen oder polymorphes Verhalten zu implementieren.

Eine virtuelle Funktion ist ein Polymorphismusmechanismus, der es einer abgeleiteten Klasse ermöglicht, die Mitgliedsfunktionen ihrer Basisklasse zu überschreiben: Deklaration: Fügen Sie das Schlüsselwort virtual vor dem Funktionsnamen hinzu. Aufruf: Mithilfe eines Basisklassenzeigers oder einer Referenz bindet der Compiler dynamisch an die entsprechende Implementierung der abgeleiteten Klasse. Praktischer Fall: Durch die Definition der Basisklasse Shape und ihrer abgeleiteten Klassen Rechteck und Kreis wird die Anwendung virtueller Funktionen im Polymorphismus demonstriert, um Flächen zu berechnen und Formen zu zeichnen.

Virtuelle Funktionen in C++ ermöglichen abgeleiteten Klassen, von Basisklassen geerbte Methoden neu zu definieren, um Polymorphismus zu erreichen. Die Syntax lautet: Deklarieren Sie eine virtuelle Funktion mit dem Schlüsselwort virtual in der Basisklasse und definieren Sie sie mit Override in der abgeleiteten Klasse neu. Durch Aufrufen einer virtuellen Funktion über einen Zeiger oder eine Referenz kann ein abgeleitetes Klassenobjekt eine virtuelle Basisklassenfunktion aufrufen. Zu den Hauptfunktionen virtueller Funktionen gehören: Realisierung von Polymorphismus, Unterstützung dynamischer Bindung und Bereitstellung von Abstraktion.

Virtuelle Funktionen verwenden dynamische Bindung, um die aufzurufende Funktion zur Laufzeit zu bestimmen und so Polymorphismus zu erreichen. Zu seinen Vorteilen gehören Skalierbarkeit und Wiederverwendbarkeit, es bringt aber auch Mehraufwand und Komplexität mit sich. Virtuelle Funktionen werden häufig verwendet, um Methoden verschiedener Objekttypen auf einheitliche Weise zu implementieren.

Virtuelle Funktionen und rein virtuelle Funktionen in C++ sind häufig verwendete Werkzeuge vieler Programmierer, die objektorientierte Programmierung verwenden. Unter der Voraussetzung ihrer korrekten Verwendung können die Flexibilität und Wartbarkeit des Programms erheblich verbessert werden. In diesem Artikel werden die Anwendungsfähigkeiten virtueller Funktionen und rein virtueller Funktionen erörtert und einige praktische Entwicklungserfahrungen geteilt. 1. Virtuelle Funktion 1. Was ist eine virtuelle Funktion? Virtuelle Funktionen sind eine Technik zur Implementierung von Polymorphismus, die es ermöglicht, die Mitgliedsfunktionen einer Klasse zur Laufzeit dynamisch zu bestimmen. Wenn eine virtuelle Funktion mithilfe eines Basisklassenzeigers oder einer Referenz aufgerufen wird, wird das Programm dies tun

In C++ werden rein virtuelle Funktionen deklariert, aber nicht in der Basisklasse implementiert, wodurch abgeleitete Klassen gezwungen werden, bestimmtes Verhalten zu implementieren, um Polymorphismus zu fördern. Abgeleitete Klassen müssen alle rein virtuellen Funktionen implementieren, andernfalls müssen sie auch abstrakte Klassen werden. Rein virtuelle Funktionen stellen Polymorphismus sicher, indem sie sicherstellen, dass nur Klassen, die alle rein virtuellen Funktionen implementieren, als Zeiger oder Referenzen auf abstrakte Klassen verwendet werden können. In praktischen Fällen wie dem Zeichnen von Grafiken kann sichergestellt werden, dass alle Formobjekte auf den Aufruf von draw () reagieren, Polymorphismus erreichen und die Skalierbarkeit und Wartbarkeit des Codes verbessern können.
