Warisan fungsi membenarkan kelas terbitan menggunakan semula definisi fungsi kelas asas, yang dicapai melalui langkah berikut: Tentukan kelas asas abstrak, termasuk fungsi maya tulen. Gunakan kata kunci ganti dalam kelas terbitan untuk mewarisi dan melaksanakan fungsi kelas asas. Kes praktikal: Cipta kelas asas abstrak Bentuk, dan terbitkan kelas Bulatan dan Segi Empat untuk mengira kawasan bentuk yang berbeza.
Penjelasan terperinci tentang warisan fungsi C++: mentakrif dan menggunakan kelas asas abstrak
Apakah warisan fungsi?
Warisan fungsi ialah ciri C++ yang membenarkan kelas terbitan mewarisi takrifan fungsi kelas asas, dengan itu menggunakan semula fungsi kelas asas dalam subkelas.
Tentukan kelas asas abstrak
Kelas asas abstrak ialah kelas asas yang tidak dimaksudkan untuk dijadikan instantiat, ia hanya berfungsi sebagai kelas asas untuk kelas lain. Ia mengandungi fungsi maya tulen (iaitu, fungsi tanpa badan fungsi) yang mesti ditindih dalam kelas terbitan. Untuk mengisytiharkan kelas asas abstrak, anda boleh menggunakan virtual
和 = 0
,例如:
class Shape { public: virtual double area() const = 0; };
派生类中的函数继承
派生类可以继承抽象基类的函数定义,方法是使用 override
class Circle : public Shape { public: override double area() const { return M_PI * radius * radius; } private: double radius; };
Warisan fungsi dalam kelas terbitan
Kelas terbitan boleh mewarisi asas abstrak definisi fungsi kelas dengan menggunakan kata kuncioverride
dan menyediakan pelaksanaan fungsi tersebut. Contohnya: #include <iostream> #include <cmath> using namespace std; class Shape { public: virtual double area() const = 0; }; class Circle : public Shape { public: Circle(double radius) : radius(radius) {} override double area() const { return M_PI * radius * radius; } private: double radius; }; class Rectangle : public Shape { public: Rectangle(double width, double height) : width(width), height(height) {} override double area() const { return width * height; } private: double width; double height; }; int main() { Circle circle(5); cout << "Circle area: " << circle.area() << endl; Rectangle rectangle(3, 4); cout << "Rectangle area: " << rectangle.area() << endl; return 0; }
Kes amali: Pengiraan luas bentuk
Mari kita ambil pengiraan luas bentuk sebagai contoh untuk demonstrasi praktikal. Kami mencipta kelas asas abstrak Bentuk dan mencipta kelas terbitan Bulatan dan Segi Empat untuk mengira luas bulatan dan segi empat tepat: 🎜Circle area: 78.5398 Rectangle area: 12
Atas ialah kandungan terperinci Penjelasan terperinci tentang warisan fungsi C++: Bagaimana untuk menentukan dan menggunakan kelas asas abstrak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!