Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Kes aplikasi praktikal fungsi C++ terlebih beban dan menulis semula

Kes aplikasi praktikal fungsi C++ terlebih beban dan menulis semula

PHPz
PHPzasal
2024-04-20 08:42:02503semak imbas

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

Kes aplikasi praktikal kelebihan beban dan penulisan semula fungsi C++

Pembebanan fungsi

Pembebanan fungsi membolehkan nama fungsi yang sama mempunyai pelaksanaan berbeza untuk mengendalikan jenis atau bilangan parameter yang berbeza. Sebagai contoh, kita boleh mencipta fungsi yang mencetak jenis data yang berbeza:

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

Fungsi menimpa

Mengganti fungsi membenarkan fungsi yang ditakrifkan dalam kelas terbitan mempunyai pelaksanaan yang berbeza daripada fungsi dalam kelas asas dengan nama dan jenis parameter yang sama . Sebagai contoh, kami mempunyai kelas asas Bentuk yang mentakrifkan fungsi untuk mengira kawasan: 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

Subkelas Segi empat tepat dan Bulatan mengatasi getArea berfungsi dan menyediakan pelaksanaannya sendiri: 🎜rrreee🎜🎜Contoh praktikal🎜🎜🎜Pertimbangkan contoh berikut, yang menggunakan lebihan fungsi dan penulisan semula fungsi untuk mencipta atur cara yang mengira luas sesuatu bentuk: 🎜rrreee🎜 Dalam kes ini, kelas Shape mentakrifkan fungsi getArea maya, yang ditindih oleh subkelas Rectangle dan Bulatan. Fungsi printArea menggunakan lebihan fungsi untuk mengendalikan pelbagai jenis objek Shape dan mencetak kawasannya. 🎜

Atas ialah kandungan terperinci Kes aplikasi praktikal fungsi C++ terlebih beban dan menulis semula. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn