首頁  >  文章  >  後端開發  >  C++ 函式重載與重寫的實際應用案例

C++ 函式重載與重寫的實際應用案例

PHPz
PHPz原創
2024-04-20 08:42:02548瀏覽

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

C 函數重載與重寫的實際應用案例

函數重載

#函數重載允許同一個函數名稱具有不同的實現,以處理不同類型或數量的參數。例如,我們可以建立一個列印不同類型資料的函數:

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;
}

函數重寫

#函數重寫允許衍生類別中定義的函數與基底類別中具有相同名稱和參數類型的函數具有不同的實作。例如,我們有一個基底類別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 函數使用函數重載來處理不同類型的 Shape 物件並列印它們的面積。

以上是C++ 函式重載與重寫的實際應用案例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn