Heim  >  Artikel  >  Backend-Entwicklung  >  Praktische Anwendungsfälle des Überladens und Umschreibens von C++-Funktionen

Praktische Anwendungsfälle des Überladens und Umschreibens von C++-Funktionen

PHPz
PHPzOriginal
2024-04-20 08:42:02503Durchsuche

C++ 函数重载和重写的实际应用案例

Praktische Anwendungsfälle des Überladens und Umschreibens von C++-Funktionen

Funktionsüberladung

Funktionsüberladung ermöglicht, dass derselbe Funktionsname unterschiedliche Implementierungen hat, um unterschiedliche Typen oder Anzahlen von Parametern zu verarbeiten. Beispielsweise können wir eine Funktion erstellen, die verschiedene Datentypen ausgibt:

void print(int value) {
  cout << value << endl;
}

void print(double value) {
  cout << value << endl;
}

int main() {
  int num = 10;
  double number = 12.5;
  print(num); // 调用 print(int)
  print(number); // 调用 print(double)
  return 0;
}

Funktionsüberschreibungen

Funktionsüberschreibungen ermöglichen, dass in einer abgeleiteten Klasse definierte Funktionen andere Implementierungen haben als Funktionen in der Basisklasse mit demselben Namen und denselben Parametertypen . Zum Beispiel haben wir eine Basisklasse Shape, die eine Funktion zur Flächenberechnung definiert: Shape,其中定义了一个计算面积的函数:

class Shape {
public:
  virtual double getArea() = 0; // 虚拟函数声明
};

子类 RectangleCircle 覆盖了 getArea 函数并提供了自己的实现:

class Rectangle: public Shape {
public:
  double width, height;
  Rectangle(double width, double height) : width(width), height(height) {}
  double getArea() override {
    return width * height;
  }
};

class Circle: public Shape {
public:
  double radius;
  Circle(double radius) : radius(radius) {}
  double getArea() override {
    return 3.14 * radius * radius;
  }
};

实战案例

考虑以下示例,它使用函数重载和函数重写来创建一个计算形状面积的程序:

#include <iostream>

using namespace std;

// 基类 Shape
class Shape {
public:
  virtual double getArea() = 0;
};

// 子类 Rectangle
class Rectangle: public Shape {
public:
  double width, height;
  Rectangle(double width, double height) : width(width), height(height) {}
  double getArea() override {
    return width * height;
  }
};

// 子类 Circle
class Circle: public Shape {
public:
  double radius;
  Circle(double radius) : radius(radius) {}
  double getArea() override {
    return 3.14 * radius * radius;
  }
};

// 函数重载用来打印不同类型数据的面积
void printArea(Shape *shape) {
  cout << "Area of the Shape: " << shape->getArea() << endl;
}

int main() {
  Rectangle rectangle(5, 10);
  Circle circle(2);
  printArea(&rectangle);
  printArea(&circle);
  return 0;
}

在这个案例中,Shape 类定义了一个虚拟的 getArea 函数,由子类 RectangleCircle 覆盖。printArea 函数使用函数重载来处理不同类型的 Shaperrreee

Die Unterklassen Rectangle und Circle überschreiben getArea Funktion und stellt eine eigene Implementierung bereit: 🎜rrreee🎜🎜Ein praktisches Beispiel🎜🎜🎜Betrachten Sie das folgende Beispiel, das Funktionsüberladung und Funktionsumschreiben verwendet, um ein Programm zu erstellen, das die Fläche einer Form berechnet: 🎜rrreee🎜 In diesem Fall definiert die Klasse Shape eine virtuelle Funktion getArea, die von den Unterklassen Rectangle und Circleüberschrieben wird >. Die Funktion printArea verwendet Funktionsüberladungen, um verschiedene Arten von Shape-Objekten zu verarbeiten und deren Bereiche zu drucken. 🎜

Das obige ist der detaillierte Inhalt vonPraktische Anwendungsfälle des Überladens und Umschreibens von C++-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