Heim  >  Artikel  >  Backend-Entwicklung  >  Wie deklariere und rufe ich virtuelle Funktionen in C++ auf?

Wie deklariere und rufe ich virtuelle Funktionen in C++ auf?

WBOY
WBOYOriginal
2024-04-12 16:03:021157Durchsuche

Virtuelle Funktion ist ein Polymorphismusmechanismus, der es einer abgeleiteten Klasse ermöglicht, die Mitgliedsfunktion 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.

C++ 中如何声明和调用虚函数?

Virtuelle Funktionen in C++

Virtuelle Funktionen sind ein Polymorphismusmechanismus, der es einer abgeleiteten Klasse ermöglicht, die Mitgliedsfunktionen ihrer Basisklasse zu überschreiben. Dies ermöglicht es Programmierern, allgemeines Verhalten in einer Basisklasse zu definieren und gleichzeitig abgeleiteten Klassen die Bereitstellung einer instanzspezifischen Implementierung dieses Verhaltens zu ermöglichen.

Deklarieren einer virtuellen Funktion

Um eine virtuelle Funktion zu deklarieren, platzieren Sie das Schlüsselwort virtual am Anfang des Funktionsnamens. Zum Beispiel:

class Base {
public:
    virtual void print() const;
};

Eine virtuelle Funktion aufrufen

Eine virtuelle Funktion aufrufen, indem ein Basisklassenzeiger oder eine Referenz verwendet wird. Der Compiler bindet dynamisch an die entsprechende Implementierung der abgeleiteten Klasse. Zum Beispiel:

void doSomething(Base* base) {
    base->print();
}

Praktischer Fall

Das Folgende ist ein Beispiel für die Verwendung virtueller Funktionen:

#include <iostream>

class Shape {
public:
    virtual double area() const = 0;
    virtual void draw() const = 0;
};

class Rectangle : public Shape {
public:
    Rectangle(double width, double height) : width_(width), height_(height) {}
    
    double area() const override { return width_ * height_; }
    void draw() const override { std::cout << "Drawing rectangle" << std::endl; }
    
private:
    double width_;
    double height_;
};

class Circle : public Shape {
public:
    Circle(double radius) : radius_(radius) {}
    
    double area() const override { return 3.14 * radius_ * radius_; }
    void draw() const override { std::cout << "Drawing circle" << std::endl; }
    
private:
    double radius_;
};

int main() {
    Shape* rectangle = new Rectangle(5, 10);
    Shape* circle = new Circle(5);
    
    std::cout << rectangle->area() << std::endl; // Output: 50
    std::cout << circle->area() << std::endl;   // Output: 78.5
    
    rectangle->draw();   // Output: Drawing rectangle
    circle->draw();     // Output: Drawing circle
    
    return 0;
}

Das obige ist der detaillierte Inhalt vonWie deklariere und rufe ich virtuelle Funktionen in C++ auf?. 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