Heim > Artikel > Backend-Entwicklung > Kann eine C++-Funktion als virtuell deklariert werden? Welche Rolle spielen virtuelle Funktionen?
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 in C++
Einführung
Eine virtuelle Funktion ist eine spezielle Art von Mitgliedsfunktion, die es einer abgeleiteten Klasse ermöglicht, von einer Basisklasse geerbte Methoden neu zu definieren. Dies ermöglicht Polymorphismus, d. h. abgeleitete Klassenobjekte können auf die gleiche Weise wie Basisklassenobjekte behandelt werden.
Syntax
Virtuelle Funktionen werden in der Basisklasse mit dem Schlüsselwort virtual
deklariert: virtual
关键字:
class Base { public: virtual void func() { /* ... */ } };
在派生类中,可以重新定义虚函数:
class Derived : public Base { public: void func() override { /* ... */ } };
虚函数调用通过指针或引用完成,因此派生类对象可以调用父类中的虚函数:
Base* base = new Derived; base->func(); // 调用 Derived::func()
实战案例
考虑以下示例:
class Shape { public: virtual double area() const = 0; }; class Circle : public Shape { public: Circle(double radius) : _radius(radius) {} double area() const override { return _radius * _radius * 3.14; } double _radius; }; class Square : public Shape { public: Square(double side) : _side(side) {} double area() const override { return _side * _side; } double _side; }; int main() { Shape* shapes[] = {new Circle(5), new Square(4)}; double total_area = 0; for (Shape* shape : shapes) { total_area += shape->area(); } std::cout << "Total area: " << total_area << std::endl; }
此示例中,基类 Shape
定义了一个抽象函数 area()
,派生类 Circle
和 Square
提供自己的实现。主函数创建一个 Shape
rrreee
rrreeeVirtuelle Funktionsaufrufe erfolgen über Zeiger oder Die Referenz ist vollständig, sodass das abgeleitete Klassenobjekt die virtuelle Funktion in der übergeordneten Klasse aufrufen kann: rrreee
Praktisches Beispiel
Shape
definiert eine Abstraktionsfunktion area()
, abgeleitete Klassen Circle
und Square
stellen ihre eigene Implementierung bereit. Die Hauptfunktion erstellt ein Array von Shape
-Zeigern, die auf Objekte der abgeleiteten Klasse zeigen, und berechnet die Gesamtfläche durch virtuelle Funktionsaufrufe. Das obige ist der detaillierte Inhalt vonKann eine C++-Funktion als virtuell deklariert werden? Welche Rolle spielen virtuelle Funktionen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!