Penulisan semula fungsi C++: meliputi kecacatan kelas induk dan mengoptimumkan struktur kod

王林
Lepaskan: 2024-05-02 10:06:01
asal
973 orang telah melayarinya

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++ 函数重写:覆盖父类缺陷,优化代码结构

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:

  • Melindungi Kecacatan Kelas Ibu Bapa:Subkelas boleh membetulkan kecacatan atau kesilapan reka bentuk dalam kelas induk.
  • Optimumkan struktur kod:Fungsi penulisan semula boleh meningkatkan kebolehselenggaraan dan kebolehbacaan kod.

Syntax

Sintaks untuk mengatasi fungsi kelas induk dalam subkelas adalah seperti berikut:

returnType ChildClass::functionName(argumentList) { // 重写后的函数体 }
Salin selepas log masuk

Antaranya:

  • returnType. overrid fungsi:returnType:重写函数的返回类型。
  • ChildClass:派生类名称。
  • functionName:要重写的函数名称。
  • argumentList:重写函数的参数列表。

实战案例:几何形状基类

考虑一个几何形状基类,它定义一个area虚拟函数来计算形状的面积:

class Shape { public: virtual double area() const = 0; };
Salin selepas log masuk

我们创建派生类SquareCircle,分别为正方形和圆形:

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

覆盖父类缺陷

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

优化代码结构

考虑另一个具有以下方法的Vector类:

class Vector { public: void add(int x) { value += x; } void subtract(int x) { value -= x; } };
Salin selepas log masuk

我们可以通过重写加法运算符,

ChildClass: Nama kelas terbitan.

functionName: Nama fungsi yang akan ditulis semula.

argumentList: Tulis semula senarai parameter fungsi.

Kes Praktikal: Kelas Asas Bentuk Geometri Pertimbangkan kelas asas bentuk geometri yang mentakrifkan fungsi maya luasuntuk mengira luas bentuk:
class Vector { public: Vector& operator+=(int x) { value += x; return *this; } Vector& operator-=(int x) { value -= x; return *this; } private: int value; };
Salin selepas log masuk
Kami mencipta terbitan kelas Squaredan Bulatan, masing-masing segi empat sama dan bulatan:
Vector v; v += 10; // 相当于 v.add(10) v -= 5; // 相当于 v.subtract(5)
Salin selepas log masuk
mengatasi kecacatan kelas induk Bentuk kelas asas kawasan code>Fungsi adalah abstrak kerana ia tidak mempunyai pelaksanaan konkrit. Subkelas mesti menyediakan pelaksanaannya sendiri. Walau bagaimanapun, untuk kalangan seperti Bulatan, fungsi kawasankelas induk adalah salah kerana ia tidak mengambil kira pi. Dengan mengatasi fungsi kawasan kelas Bulatan, kami boleh mengatasi kecacatan kelas induk dan menyediakan pengiraan kawasan yang betul: rrreeeOptimumkan struktur kod Pertimbangkan kelas A Vectoryang lain dengan kaedah berikut: rrreeeKami boleh mereka bentuk semula kod ini dengan mengatasi operator penambahan ,untuk meningkatkan kebolehbacaan dan kebolehselenggaraan kod Ciri-ciri: rrreeePengendali mengatasi membolehkan kami mengendalikan vektor dengan sintaks yang lebih ringkas dan jelas: rrreeeKesimpulanPeningkatan 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!

Label berkaitan:
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
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!