Heim  >  Artikel  >  Backend-Entwicklung  >  Umschreiben von C++-Funktionen: Eröffnung eines neuen Kapitels der flexiblen Vererbung

Umschreiben von C++-Funktionen: Eröffnung eines neuen Kapitels der flexiblen Vererbung

WBOY
WBOYOriginal
2024-05-03 14:03:01329Durchsuche

Das Umschreiben von C++-Funktionen ermöglicht es Unterklassen, übergeordnete Klassenfunktionen zu überschreiben, wodurch Polymorphismus erreicht wird und die Flexibilität der Vererbung erreicht wird. Beim Umschreiben einer Funktion muss die Signatur der Unterklassenfunktion genau mit der Funktion der übergeordneten Klasse übereinstimmen, die durch das Schlüsselwort override identifiziert wird. Zu den Vorteilen gehören Flexibilität, Polymorphismus und Code-Wiederverwendung. Bitte beachten Sie jedoch, dass Signaturabgleichsregeln und endgültige Modifikatoren nicht überschrieben werden können.

C++ 函数重写:开启灵活继承的全新篇章

C++-Funktionsumschreibung: Ein neues Kapitel der flexiblen Vererbung aufschlagen

Vorwort

Funktionsumschreibung ist eine leistungsstarke C++-Funktion, die es Unterklassen ermöglicht, Funktionen in übergeordneten Klassen zu überschreiben, um mehrere Funktionen zu erreichen. Dies eröffnet neue Möglichkeiten für eine flexible Vererbung, die es Unterklassen ermöglicht, ihr Verhalten anzupassen und gleichzeitig die zugrunde liegende Funktionalität der übergeordneten Klasse beizubehalten.

Syntax

Um eine Funktion zu überschreiben, muss die Unterklasse eine neue Funktion mit derselben Signatur wie die Funktion der übergeordneten Klasse deklarieren. Der Rückgabetyp, die Parameter und der Name der neuen Funktion müssen genau mit denen der übergeordneten Klassenfunktion übereinstimmen. Das Folgende ist die Syntax zum Überschreiben einer Funktion:

returntype ClassName::functionName(parameters) {
  // 子类的函数体
}

wobei returntype der Rückgabetyp der Funktion ist, ClassName der Name der Unterklasse ist und functionName ist Um den Namen einer Funktion zu überschreiben, ist parameters die Parameterliste der Funktion. returntype 是函数的返回类型,ClassName 是子类的名称,functionName 是要重写函数的名称,parameters 是函数的参数列表。

实战案例

考虑这样一个父类:

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

我们想创建一个子类 Rectangle,它具有与父类相同的 area() 函数,但提供自己的实现:

class Rectangle : public Shape {
public:
  double length;
  double width;

  Rectangle(double l, double w) : length(l), width(w) {}

  double area() override {
    return length * width;
  }
};

在子类 Rectangle 中,我们重写了 area() 函数并添加了 lengthwidth 成员变量来存储矩形的尺寸。通过使用 override 关键字,我们可以显式指示该函数是重写父类函数。

优点

函数重写提供了以下优点:

  • 灵活性:允许子类自定义其行为,同时保留父类的基本功能。
  • 多态性:支持通过基类指针引用不同类型的对象,并调用正确的重写函数。
  • 代码重用:父类中的通用功能可以被子类共享,避免重复性代码。

注意事项

  • 函数重写遵循“签名匹配”规则,即子类函数的返回类型、参数和名称必须与父类函数相同。
  • 如果子类函数未覆盖父类函数,则编译器将发出警告。
  • 如果父类函数被声明为 final
Praktischer Fall🎜🎜🎜Betrachten Sie eine solche übergeordnete Klasse: 🎜rrreee🎜Wir möchten eine Unterklasse Rectangle erstellen, die dieselbe area()-Funktion wie die übergeordnete Klasse hat , aber stellen Sie Ihre eigene Implementierung bereit: 🎜rrreee🎜In der Unterklasse Rectangle überschreiben wir die Funktion area() und fügen length und hinzu width Mitgliedsvariable zum Speichern der Größe des Rechtecks. Durch die Verwendung des Schlüsselworts override können wir explizit angeben, dass die Funktion die Funktion der übergeordneten Klasse überschreibt. 🎜🎜🎜 Vorteile 🎜🎜🎜 Das Überschreiben von Funktionen bietet die folgenden Vorteile: 🎜
  • 🎜Flexibilität: 🎜 Ermöglicht Unterklassen, ihr Verhalten anzupassen und gleichzeitig die Grundfunktionalität der übergeordneten Klasse beizubehalten. 🎜
  • 🎜Polymorphismus: 🎜Unterstützt die Referenzierung verschiedener Objekttypen über Basisklassenzeiger und den Aufruf der richtigen überschriebenen Funktionen. 🎜
  • 🎜Code-Wiederverwendung: 🎜Gemeinsame Funktionen in der übergeordneten Klasse können von Unterklassen gemeinsam genutzt werden, um doppelten Code zu vermeiden. 🎜🎜🎜🎜Hinweise🎜🎜
    • Das Umschreiben von Funktionen folgt der „Signatur-Matching“-Regel, d. h. der Rückgabetyp, die Parameter und der Name der Unterklassenfunktion müssen mit denen der übergeordneten Klassenfunktion identisch sein. 🎜
    • Der Compiler gibt eine Warnung aus, wenn eine Unterklassenfunktion eine übergeordnete Klassenfunktion nicht überschreibt. 🎜
    • Wenn eine übergeordnete Klassenfunktion als final deklariert ist, kann sie in der untergeordneten Klasse nicht überschrieben werden. 🎜🎜

Das obige ist der detaillierte Inhalt vonUmschreiben von C++-Funktionen: Eröffnung eines neuen Kapitels der flexiblen Vererbung. 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