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
Patricia ArquetteOriginal
2024-12-22 03:18:12243Durchsuche

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; }
};

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
};

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!

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