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

PHPz
Lepaskan: 2024-04-20 08:42:02
asal
549 orang telah melayarinya

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;
}
Salin selepas log masuk

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; // 虚拟函数声明
};
Salin selepas log masuk

子类 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;
  }
};
Salin selepas log masuk

实战案例

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

#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;
}
Salin selepas log masuk

在这个案例中,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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan