Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk membezakan lebihan fungsi dan menulis semula dalam C++
Lebihan beban fungsi membenarkan fungsi dengan nama yang sama tetapi tandatangan berbeza dalam kelas, manakala overriding fungsi berlaku dalam kelas terbitan apabila ia mengatasi fungsi dengan tandatangan yang sama dalam kelas asas, memberikan gelagat berbeza. Perbezaan antara kelebihan beban fungsi dan menulis semula dalam C++ )berbeza.
Sintaks:
return_type function_name(parameter_types) { // 函数体 } // 另一个重载 return_type function_name(other_parameter_types) { // 另一个函数体 }Contoh praktikal:
Pertimbangkan kelas yang dipanggil AreaCalculator
yang mengira luas bentuk yang berbeza: >Hereee,
> kod> Fungsi dibebankan untuk menerima nombor dan jenis argumen yang berbeza, membolehkan kawasan berbeza dikira berdasarkan jenis bentuk.
Fungsi mengatasi
Fungsi mengatasi berlaku dalam kelas terbitan apabila ia mengatasi fungsi dalam kelas asas dengan tandatangan yang sama (nama dan jenis parameter). Fungsi yang ditindih dalam kelas terbitan selalunya berkelakuan berbeza daripada fungsi dalam kelas asas.
Sintaks:AreaCalculator
的类,它计算不同形状的面积:
class AreaCalculator { public: double Area(double radius) { return M_PI * radius * radius; } double Area(double length, double width) { return length * width; } double Area(int numOfSides, double sideLength) { // 正多边形的面积公式 // ... 省略后面代码 } };
在这里,Area
函数被重载以接收不同数量和类型的参数,允许根据形状类型计算不同的面积。
函数重写
函数重写发生在派生类中,当它覆盖基类中具有相同签名(名称和参数类型)的函数时。派生类中的重写函数的行为通常不同于基类中的函数。
语法:
class DerivedClass : public BaseClass { public: // 重写基类中的函数 return_type function_name(parameter_types) { // 重写的函数体 } };
实战案例:
考虑一个名为 Shape
的基类,它定义了一个 Draw
函数来绘制形状:
class Shape { public: virtual void Draw() { // 绘制通用形状 // ... 省略后面代码 } };
派生类 Circle
可以重写 Draw
函数来专门绘制圆形:
class Circle : public Shape { public: void Draw() override { // 绘制圆形 // ... 省略后面代码 } };
通过重写,Circle
类的 Draw
函数将覆盖 Shape
类中的 Draw
rrreee
Shape
, yang mentakrifkan fungsi Draw
untuk melukis bentuk: 🎜 rrreee Kelas terbitan Bulatan
boleh mengatasi fungsi Draw
untuk melukis bulatan secara khusus: 🎜rrreee🎜Dengan mengatasi, kelas Circle
The Draw mengatasi fungsi <code>Draw
dalam kelas Shape
dan menyediakan pelaksanaan lukisan yang lebih khusus. 🎜Atas ialah kandungan terperinci Bagaimana untuk membezakan lebihan fungsi dan menulis semula dalam C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!