Rumah >pembangunan bahagian belakang >C++ >Penjelasan terperinci tentang warisan fungsi C++: Bagaimana untuk menentukan dan menggunakan kelas asas abstrak?

Penjelasan terperinci tentang warisan fungsi C++: Bagaimana untuk menentukan dan menggunakan kelas asas abstrak?

WBOY
WBOYasal
2024-05-03 13:21:021068semak imbas

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.

C++ 函数继承详解:如何定义和使用抽象基类?

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 maya dan = 0, contohnya: 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 kunci override 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
🎜🎜Jalankan output: 🎜🎜rrreee

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!

Kenyataan:
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