Heim >Backend-Entwicklung >C++ >Wie überschreibe ich die Basisklassenfunktion in C++?

Wie überschreibe ich die Basisklassenfunktion in C++?

王林
王林Original
2024-04-12 22:45:02485Durchsuche

In C++ ermöglicht das Überschreiben von Funktionen abgeleiteten Klassen, Basisklassenfunktionen zu überschreiben, um ihr Verhalten zu erweitern oder zu ändern. Die Syntax lautet: Den gleichen Funktionsnamen haben. Die gleiche Funktionssignatur haben. Das Schlüsselwort „override“ verwenden Basisklasse. Dies ist nützlich, wenn Sie die Funktionalität einer Basisklasse erweitern oder ihr Verhalten ändern.

C++ 中如何覆盖基类函数?Syntax

Um eine Basisklassenfunktion zu überschreiben, muss die Funktion in der abgeleiteten Klasse:

den gleichen Namen wie die Basisklassenfunktion haben

die gleiche Signatur haben (Parameterliste und Rückgabewert) Verwenden Schlüsselwort override

Betrachten Sie beispielsweise die folgende Basisklasse:

class Base {
public:
    virtual void print() { std::cout << "Base class" << std::endl; }
};
    Um die Funktion print() zu überschreiben, kann eine abgeleitete Klasse die folgende Syntax verwenden :
  • class Derived : public Base {
    public:
        override void print() { std::cout << "Derived class" << std::endl; }
    };
  • Praktischer Fall
  • override 关键字

例如,考虑以下基类:

class Shape {
public:
    virtual double area() { return 0; }
};

class Circle : public Shape {
public:
    double radius;

    override double area() {
        return 3.14 * radius * radius;
    }
};

要覆盖 print() 函数,派生类可以使用以下语法:

int main() {
    // 创建一个圆形对象
    Circle circle;
    circle.radius = 5;

    // 通过基类指针调用派生类函数
    Shape* shape = &circle;
    double area = shape->area();

    std::cout << "Area of the circle: " << area << std::endl;

    return 0;
}

实战案例

考虑一个 Shape 基类和一个 Circle 派生类:

Area of the circle: 78.5

main()Betrachten Sie eine Shape-Basisklasse und eine von Circle abgeleitete Klasse:

rrreee

Im main() Funktion können wir virtuelle Methoden verwenden. Planen Sie Aufrufe dieser beiden Methoden:

rrreee🎜Ausgabe: 🎜rrreee

Das obige ist der detaillierte Inhalt vonWie überschreibe ich die Basisklassenfunktion 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