Heim > Backend-Entwicklung > C++ > Was ist der Unterschied zwischen virtuellen und rein virtuellen Funktionen in C?

Was ist der Unterschied zwischen virtuellen und rein virtuellen Funktionen in C?

Patricia Arquette
Freigeben: 2024-12-22 03:18:12
Original
202 Leute haben es durchsucht

What's the Difference Between Virtual and Pure Virtual Functions in C  ?

Virtuelle vs. rein virtuelle Funktionen

In der objektorientierten Programmierung sind virtuelle Funktionen und rein virtuelle Funktionen wesentliche Konzepte für das Verständnis von Polymorphismus.

Was ist eine virtuelle Funktion?

Eine virtuelle Funktion ist vererbbar und überschreibbare Funktion in einer Basisklasse, die einen dynamischen Versand ermöglicht. Wenn eine virtuelle Funktion für ein Objekt aufgerufen wird, bestimmt das Laufzeitsystem die tatsächlich auszuführende Funktionsimplementierung basierend auf dem Typ des Objekts.

Beispiel:

class Base {
public:
    virtual void foo() { std::cout << "Base::foo()" << std::endl; }
};

class Derived : public Base {
public:
    void foo() override { std::cout << "Derived::foo()" << std::endl; }
};
Nach dem Login kopieren

In In diesem Beispiel implementieren sowohl die Basis- als auch die abgeleitete Klasse die Funktion foo(). Wenn foo() für ein abgeleitetes Objekt aufgerufen wird, führt es die überschriebene Version aus, die „Derived::foo()“ ausgibt.

Was ist eine rein virtuelle Funktion?

Eine rein virtuelle Funktion, auch abstrakte Funktion genannt, ist eine virtuelle Funktion, die nicht in der Basisklasse definiert ist. Es dient als Platzhalter und erfordert abgeleitete Klassen, um es zu implementieren.

Beispiel:

class Base {
public:
    virtual void foo() = 0; // pure virtual function
};
Nach dem Login kopieren

Dieses Beispiel deklariert foo() als rein virtuelle Funktion in der Base Klasse. Abgeleitete Klassen müssen diese Funktion implementieren, um eine Definition bereitzustellen. Andernfalls wird die abgeleitete Klasse abstrakt und kann nicht instanziiert werden.

Unterschied zwischen virtuellen und rein virtuellen Funktionen

  • Virtuelle Funktionen können überschrieben und angepasst werden in abgeleiteten Klassen, aber sie haben eine Standardimplementierung in der Basisklasse.
  • Reine virtuelle Funktionen haben keine Implementierung in der Basisklasse und müssen in implementiert werden Abgeleitete Klassen.
  • Reine virtuelle Funktionen erzwingen, dass eine Basisklasse abstrakt ist (d. h. sie kann nicht direkt instanziiert werden).
  • Virtuelle Funktionen können zur Implementierung von Polymorphismus verwendet werden, wodurch Objekte verschiedener abgeleiteter Klassen ermöglicht werden sich anders zu verhalten, wenn auf denselben Funktionsaufruf reagiert wird.
  • Reine virtuelle Funktionen erzwingen einen Vertrag zwischen Basis- und abgeleiteten Klassen und stellen so sicher, dass Implementierungen in allen nicht-abstrakten Klassen vorhanden sind abgeleitete Klassen.

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen virtuellen und rein virtuellen Funktionen in C?. 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