Rumah > Artikel > pembangunan bahagian belakang > Penulisan semula fungsi C++: meliputi kecacatan kelas induk dan mengoptimumkan struktur kod
Penulisan semula fungsi membolehkan subkelas mengatasi fungsi kelas induk, dengan itu menyelesaikan kecacatan kelas induk dan mengoptimumkan struktur kod. Langkah-langkah khusus adalah seperti berikut: subkelas menulis semula fungsi dengan nama dan tandatangan kelas induk yang sama dan menyediakan pelaksanaannya sendiri. Subkelas boleh membetulkan kecacatan atau ralat reka bentuk dalam kelas induk. Fungsi penulisan semula boleh meningkatkan kebolehselenggaraan dan kebolehbacaan kod anda.
C++ Fungsi Penulisan Semula: Tutupi kecacatan kelas induk dan optimumkan struktur kod
Fungsi Penulisan SemulaMembenarkan subkelas melaksanakan semula fungsi dengan nama dan tandatangan kelas yang sama dalam kelas induk. Ini memberikan faedah berikut:
Syntax
Sintaks untuk mengatasi fungsi kelas induk dalam subkelas adalah seperti berikut:
returnType ChildClass::functionName(argumentList) { // 重写后的函数体 }
Antaranya:
returnType. overrid fungsi
: returnType
:重写函数的返回类型。ChildClass
:派生类名称。functionName
:要重写的函数名称。argumentList
:重写函数的参数列表。实战案例:几何形状基类
考虑一个几何形状基类,它定义一个area
虚拟函数来计算形状的面积:
class Shape { public: virtual double area() const = 0; };
我们创建派生类Square
和Circle
,分别为正方形和圆形:
class Square : public Shape { public: Square(double sideLength) : sideLength(sideLength) {} double area() const override { return sideLength * sideLength; } private: double sideLength; }; class Circle : public Shape { public: Circle(double radius) : radius(radius) {} double area() const override { return M_PI * radius * radius; } private: double radius; };
覆盖父类缺陷
Shape
基类的area
函数是抽象的,因为它没有具体实现。子类必须提供自己的实现。但是,对于像Circle
这样的圆形,父类的area
函数是错误的,因为它不考虑圆周率π。
通过重写Circle
类的area
函数,我们可以覆盖父类缺陷并提供正确的面积计算:
class Circle : public Shape { public: Circle(double radius) : radius(radius) {} double area() const override { return M_PI * radius * radius; } private: double radius; };
优化代码结构
考虑另一个具有以下方法的Vector
类:
class Vector { public: void add(int x) { value += x; } void subtract(int x) { value -= x; } };
我们可以通过重写加法运算符,
functionName
: Nama fungsi yang akan ditulis semula. argumentList
: Tulis semula senarai parameter fungsi.
class Vector { public: Vector& operator+=(int x) { value += x; return *this; } Vector& operator-=(int x) { value -= x; return *this; } private: int value; };🎜Kami mencipta terbitan kelas
Square
dan Bulatan
, masing-masing segi empat sama dan bulatan: 🎜Vector v; v += 10; // 相当于 v.add(10) v -= 5; // 相当于 v.subtract(5)🎜🎜mengatasi kecacatan kelas induk🎜🎜🎜
Bulatan
, fungsi kawasan
kelas induk adalah salah kerana ia tidak mengambil kira pi. 🎜🎜Dengan mengatasi fungsi Vector
yang lain dengan kaedah berikut: 🎜rrreee🎜Kami boleh mereka bentuk semula kod ini dengan mengatasi operator penambahan ,
untuk meningkatkan kebolehbacaan dan kebolehselenggaraan kod Ciri-ciri: 🎜 rrreee🎜Pengendali mengatasi membolehkan kami mengendalikan vektor dengan sintaks yang lebih ringkas dan jelas: 🎜rrreee🎜🎜Kesimpulan🎜🎜🎜Peningkatan fungsi ialah mekanisme berkuasa dalam C++ yang membolehkan subkelas mengatasi Kecacatan kelas induk dan mengoptimumkan struktur kod. Dengan mempertimbangkan dengan teliti reka bentuk dan pelaksanaan fungsi yang diganti, kami boleh meningkatkan keteguhan, kebolehbacaan dan kebolehselenggaraan program kami. 🎜Atas ialah kandungan terperinci Penulisan semula fungsi C++: meliputi kecacatan kelas induk dan mengoptimumkan struktur kod. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!