Heim  >  Artikel  >  Backend-Entwicklung  >  C++-Sprachstandardspezifikationen für das Überladen und Umschreiben von Funktionen

C++-Sprachstandardspezifikationen für das Überladen und Umschreiben von Funktionen

WBOY
WBOYOriginal
2024-04-21 09:09:01819Durchsuche

Funktionsüberladung ermöglicht es Ihnen, eine Funktion mit demselben Namen im selben Bereich zu definieren, erfordert jedoch eine andere Parameterliste, während Sie durch Funktionsüberschreibung eine Funktion mit demselben Namen und derselben Parameterliste wie die Basisklasse in einer abgeleiteten Klasse definieren können. Erfordert das Override-Schlüsselwort, den Rückgabetyp und die Parameterliste. Die Parameterliste ist genau die gleiche wie die Basisklassenfunktion. Beispiele zum Überladen: print(int), print(double); Beispiele zum Überschreiben: foo() in der abgeleiteten Klasse überschreibt foo() in der Basisklasse.

C++ 语言标准对函数重载和重写的规范

C++-Sprachstandardspezifikationen für Funktionsüberladung und Umschreiben

Funktionsüberladung

Überladung ermöglicht die Definition mehrerer Funktionen mit demselben Namen im selben Bereich, ihre Parameterlisten müssen jedoch unterschiedlich sein. Der C++-Sprachstandard erfordert, dass die Funktionsüberladung den folgenden Spezifikationen entspricht:

  • Die Rückgabetypen müssen gleich sein.
  • Parameterlisten müssen unterschiedlich sein, d.h. Anzahl, Art oder Reihenfolge der Parameter.
  • const-, volatile- und reference-Qualifizierer können zur Unterscheidung überladener Funktionen verwendet werden.

Beispiel:

void print(int x);
void print(double x);

Funktionsüberschreibung

Überschreibung ermöglicht die Definition einer Funktion in einer abgeleiteten Klasse mit demselben Namen und derselben Parameterliste wie in der Basisklasse. Der C++-Sprachstandard erfordert, dass das Umschreiben der Funktion den folgenden Spezifikationen entspricht:

  • Die umgeschriebene Funktion muss das Schlüsselwort override haben.
  • Der Rückgabetyp muss mit der Basisklassenfunktion identisch sein.
  • Die Parameterliste muss genau mit der Basisklassenfunktion übereinstimmen (einschließlich Typ, Reihenfolge und Qualifikationsmerkmale).
  • Abgeleitete Klassenfunktionen dürfen keine geringeren Zugriffsrechte als Basisklassenfunktionen haben (d. h. geschützte können nur geschützte oder öffentliche Funktionen überschreiben).

Beispiel:

class Base {
public:
    virtual void foo();
};

class Derived : public Base {
public:
    override void foo() override;  // 重写基类中的 foo
};

Praktischer Fall

Funktionsüberladung:

#include <iostream>

using namespace std;

void print(int x) {
    cout << "int: " << x << endl;
}

void print(double x) {
    cout << "double: " << x << endl;
}

int main() {
    print(10);  // 调用 int 版本的 print
    print(3.14); // 调用 double 版本的 print
    return 0;
}

Funktionsumschreibung:

#include <iostream>

using namespace std;

class Shape {
public:
    virtual void draw() = 0;  // 纯虚函数
};

class Rectangle : public Shape {
public:
    void draw() override {
        cout << "Drawing a rectangle" << endl;
    }
};

int main() {
    Rectangle r;
    r.draw(); // 调用 Rectangle 类中的重写函数
    return 0;
}

Das obige ist der detaillierte Inhalt vonC++-Sprachstandardspezifikationen für das Überladen und Umschreiben von Funktionen. 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