Rumah > Artikel > pembangunan bahagian belakang > Kes aplikasi praktikal fungsi C++ terlebih beban dan menulis semula
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 Shape
,其中定义了一个计算面积的函数:
class Shape { public: virtual double getArea() = 0; // 虚拟函数声明 };
子类 Rectangle
和 Circle
覆盖了 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
函数,由子类 Rectangle
和 Circle
覆盖。printArea
函数使用函数重载来处理不同类型的 Shape
rrreee
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!