Melebihi beban dan mengatasi adalah konsep yang berbeza dalam C++. Overloading membenarkan penciptaan fungsi dengan nama yang sama, dengan senarai parameter yang berbeza, manakala overriding membenarkan fungsi kelas terbitan untuk mengatasi fungsi kelas asas dengan nama yang sama. Dalam overloading, nama fungsi adalah sama tetapi senarai parameter adalah berbeza, dalam mengatasi nama fungsi dan senarai parameter mestilah sama dan fungsi kelas terbitan mesti menggunakan kata kunci override. Overloading dan overriding fungsi C++ adalah dua konsep berbeza dalam C++. Overloading membenarkan penciptaan fungsi dengan nama yang sama tetapi senarai parameter yang berbeza, manakala overriding membenarkan fungsi dalam kelas terbitan untuk mengatasi fungsi dengan nama yang sama dalam kelas asas. . nama kerana mereka mempunyai senarai parameter yang berbeza. Mereka dapat memproses jenis data yang berbeza dan melakukan pengiraan yang berbeza.
Override
Sekarang, andaikan kita mempunyai kelas asas
int area(int length, int width); // 矩形面积 double area(double radius); // 圆形面积
Bulatan
dan mengatasi fungsi kawasan
: class Shape { public: virtual double area() const = 0; };
override</code > kata kunci Fungsi <code>kawasan
kelas. Fungsi yang diganti mesti mempunyai jenis dan nama pulangan yang sama seperti fungsi induk. Kes praktikal
Kami mencipta program untuk menunjukkan lebihan muatan dan mengatasi:
class Rectangle : public Shape { public: double area() const override { return length * width; } int length, width; // 矩形属性 }; class Circle : public Shape { public: double area() const override { return Math.PI * radius * radius; } double radius; // 圆形属性 };
#include <iostream> #include <cmath> using namespace std; class Shape { public: virtual double area() const = 0; }; class Rectangle : public Shape { public: double area() const override { return length * width; } int length, width; }; class Circle : public Shape { public: double area() const override { return Math.PI * radius * radius; } double radius; }; int main() { // 创建矩形对象 Rectangle rectangle; rectangle.length = 5; rectangle.width = 3; // 创建圆形对象 Circle circle; circle.radius = 2; // 计算并输出矩形和圆形的面积 cout << "矩形面积:" << rectangle.area() << endl; cout << "圆形面积:" << circle.area() << endl; }
area
的函数,它根据不同的输入参数计算不同形状的面积:矩形面积:15 圆形面积:12.566370614359172
这些函数重载了 area
名称,因为它们有不同的参数列表。它们能够处理不同类型的数据并执行不同的计算。
覆盖
现在,假定我们有一个基类 Shape
,它有一个 area
虚拟函数:
我们可以创建派生类 Rectangle
和 Circle
,并覆盖 area
函数:
在派生类中,我们通过 override
关键字显式覆盖父类的 area
Contoh ini menunjukkan cara mencipta fungsi dengan fungsi yang berbeza melalui lebihan dan overriding.
Atas ialah kandungan terperinci Fungsi C++ melebihkan dan mengatasi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!