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.
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.
Untuk mewarisi daripada kelas asas, kelas baharu (kelas terbitan) mesti diisytiharkan menggunakan public
、protected
或 private
访问说明符声明继承关系。语法如下:
class 派生类 : 访问说明符 基类 { // 派生类成员 };
访问说明符控制派生类对基类成员的访问权限:
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; };
在此示例中,Shape
是形状类的基类,它包含一个纯虚函数 getArea()
,这意味着必须在所有派生类中实现它。
Rectangle
是一个从 Shape
继承的矩形类,它覆盖了 getArea()
函数以计算矩形的面积。Circle
是另一个从 Shape
继承的圆类,它也覆盖了 getArea()
函数以计算圆的面积。要使用这个类层次结构,我们可以创建 Rectangle
和 Circle
对象并调用 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; }
dilindungi
: Membenarkan kelas terbitan dan kelas terbitannya mengakses ahli kelas asas. peribadi
: Hanya kelas terbitan dibenarkan untuk mengakses ahli kelas asas. Rectangle area: 6 Circle area: 78.5398163397
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. Rectangle
dan Circle
dan memanggil fungsi getArea()
:🎜rrreee🎜Output:🎜rrreeeAtas 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!