Bagaimanakah warisan digunakan untuk membina hierarki kelas dalam C++?

WBOY
Lepaskan: 2024-06-04 15:11:09
asal
913 orang telah melayarinya

C++ Inheritance digunakan untuk membina hierarki kelas, di mana kelas baharu (kelas terbitan) mewarisi fungsi daripada kelas asas dan melanjutkan fungsinya. Kelas terbitan menggunakan penentu akses untuk mengisytiharkan perhubungan warisan dan mengawal akses kepada ahli kelas asas. geran awam akses kepada kelas terbitan dan kod luaran, geran dilindungi akses kepada kelas terbitan dan kelas terbitannya, dan geran persendirian akses kepada kelas terbitan sahaja. Dengan mencipta kelas terbitan dan mengatasi fungsi maya tulen kelas asas, kelas terbitan boleh melaksanakan fungsi tersuai, seperti pelaksanaan Rectangle dan Bulatan dalam contoh untuk mengira luas bentuk tertentu.

C++ 中继承如何用于构建类层次结构?

Warisan dalam C++: Membina Hierarki Kelas

Preface

Warisan ialah konsep asas dalam pengaturcaraan berorientasikan objek yang membolehkan penciptaan kelas baharu daripada kelas sedia ada. Dalam C++, warisan boleh digunakan untuk membina hierarki kelas di mana setiap kelas mewarisi daripada kelas asasnya dan mungkin memperluaskan fungsinya.

Syntax

Untuk mewarisi daripada kelas asas, kelas baharu (kelas terbitan) mesti diisytiharkan menggunakan awam, dilindungi atau peribadi kod> akses perhubungan warisan penentu. Sintaks adalah seperti berikut: publicprotectedprivate 访问说明符声明继承关系。语法如下:

class 派生类 : 访问说明符 基类 {
    // 派生类成员
};
Salin selepas log masuk
  • 访问说明符控制派生类对基类成员的访问权限:

    • public:允许派生类和外部代码访问基类成员。
    • protected:允许派生类及其派生类访问基类成员。
    • private:只允许派生类访问基类成员。

实战案例

考虑一个描述几何形状的类层次结构:

class Shape {
public:
    virtual double getArea() const = 0; // 纯虚函数
};

class Rectangle : public Shape {
public:
    Rectangle(double width, double height) : _width(width), _height(height) {}
    double getArea() const override { return _width * _height; }
private:
    double _width, _height;
};

class Circle : public Shape {
public:
    Circle(double radius) : _radius(radius) {}
    double getArea() const override { return 3.14159 * _radius * _radius; }
private:
    double _radius;
};
Salin selepas log masuk

示例

在此示例中,Shape 是形状类的基类,它包含一个纯虚函数 getArea(),这意味着必须在所有派生类中实现它。

  • Rectangle 是一个从 Shape 继承的矩形类,它覆盖了 getArea() 函数以计算矩形的面积。
  • Circle 是另一个从 Shape 继承的圆类,它也覆盖了 getArea() 函数以计算圆的面积。

要使用这个类层次结构,我们可以创建 RectangleCircle 对象并调用 getArea()

int main() {
    Rectangle rectangle(2.0, 3.0);
    cout << "Rectangle area: " << rectangle.getArea() << endl;
    Circle circle(5.0);
    cout << "Circle area: " << circle.getArea() << endl;
    return 0;
}
Salin selepas log masuk
  • Penentukan akses mengawal hak akses kelas terbitan kepada ahli kelas asas:

    • awam: dibenarkan kelas Terbitan dan ahli kelas asas akses kod luaran.
    • dilindungi: Membenarkan kelas terbitan dan kelas terbitannya mengakses ahli kelas asas.
    • peribadi: Hanya kelas terbitan dibenarkan untuk mengakses ahli kelas asas.

Contoh Praktikal🎜🎜Pertimbangkan hierarki kelas yang menerangkan bentuk geometri: 🎜
Rectangle area: 6
Circle area: 78.5398163397
Salin selepas log masuk
🎜Contoh🎜🎜Dalam contoh ini, Bentuk Adalah kelas asas kelas bentuk, ia mengandungi fungsi maya tulen getArea(), yang bermaksud bahawa ia mesti dilaksanakan dalam semua kelas terbitan. 🎜
  • Rectangle ialah kelas segi empat tepat yang diwarisi daripada Shape, yang mengatasi fungsi getArea() untuk mengira luas ​sebuah segi empat tepat.
  • Kalangan ialah satu lagi kelas bulatan yang diwarisi daripada Shape, yang turut mengatasi fungsi getArea() untuk mengira kawasan kalangan.
🎜Untuk menggunakan hierarki kelas ini, kita boleh mencipta objek Rectangle dan Circle dan memanggil fungsi getArea() :🎜rrreee🎜Output:🎜rrreee

Atas ialah kandungan terperinci Bagaimanakah warisan digunakan untuk membina hierarki kelas dalam C++?. 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
Tutorial Popular
Lagi>
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!