Heim Backend-Entwicklung C#.Net-Tutorial Was ist der Unterschied zwischen einer virtuellen Funktion und einer rein virtuellen Funktion?

Was ist der Unterschied zwischen einer virtuellen Funktion und einer rein virtuellen Funktion?

Nov 17, 2020 am 09:30 AM
纯虚函数 虚函数

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.

Was ist der Unterschied zwischen einer virtuellen Funktion und einer rein virtuellen Funktion?

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;
    }
};
Nach dem Login kopieren

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;  //我是基类的虚函数 
};
Nach dem Login kopieren

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();//调用派生类的 
}
Nach dem Login kopieren

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!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

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

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Detaillierte Erläuterung des Debuggens von C++-Funktionen: Wie debuggt man Probleme in virtuellen Funktionen? Detaillierte Erläuterung des Debuggens von C++-Funktionen: Wie debuggt man Probleme in virtuellen Funktionen? May 02, 2024 pm 03:42 PM

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.

Wie funktionieren C++-Funktionsüberladung und virtuelle Funktionen zusammen? Wie funktionieren C++-Funktionsüberladung und virtuelle Funktionen zusammen? Apr 26, 2024 am 10:09 AM

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.

Interaktion zwischen C++-Friend-Funktionen und virtuellen Funktionen Interaktion zwischen C++-Friend-Funktionen und virtuellen Funktionen Apr 16, 2024 pm 03:45 PM

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.

Wie deklariere und rufe ich virtuelle Funktionen in C++ auf? Wie deklariere und rufe ich virtuelle Funktionen in C++ auf? Apr 12, 2024 pm 04:03 PM

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.

Kann eine C++-Funktion als virtuell deklariert werden? Welche Rolle spielen virtuelle Funktionen? Kann eine C++-Funktion als virtuell deklariert werden? Welche Rolle spielen virtuelle Funktionen? Apr 19, 2024 pm 06:06 PM

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.

Das Geheimnis der virtuellen C++-Funktionen gelüftet Das Geheimnis der virtuellen C++-Funktionen gelüftet Apr 19, 2024 am 09:18 AM

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.

Anwendungskenntnisse virtueller Funktionen und rein virtueller Funktionen in C++ Anwendungskenntnisse virtueller Funktionen und rein virtueller Funktionen in C++ Aug 22, 2023 am 11:33 AM

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

Wie fördern rein virtuelle Funktionen den Polymorphismus in C++? Wie fördern rein virtuelle Funktionen den Polymorphismus in C++? Jun 03, 2024 pm 08:01 PM

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.

See all articles