提示信息

C++ 继承机制概述(下)

乏力 已关注

C++ 继承是面向对象编程中的一个重要机制,它允许一个类(称为子类或派生类)继承另一个类(称为基类或父类)的属性和行为。这种机制的应用可以提高代码的重用性和扩展性。以下是 C++ 继承机制的一些关键概念和方面:

基本概念

  1. 基类(Base Class)和派生类(Derived Class)

    • 基类是被继承的类,派生类是从基类继承而来的类。派生类拥有基类的所有非私有成员(包括数据成员和函数)。
  2. 继承方式

    • C++ 支持三种继承方式:公有继承(public)、保护继承(protected)和私有继承(private)。继承方式决定了基类成员在派生类中的访问权限。
  • 公有继承:基类的公共和保护成员在派生类中保持其访问级别。
  • 保护继承:基类的公共和保护成员在派生类中变为保护成员。
  • 私有继承:基类的公共和保护成员在派生类中变为私有成员。

继承特点

  1. 多重继承(Multiple Inheritance)

    • C++ 支持一个类从多个基类继承,这被称为多重继承。这可能导致“菱形继承”问题,通常通过虚继承来解决。
  2. 虚继承(Virtual Inheritance)

    • 虚继承用于解决多重继承中的“菱形继承”问题,防止多个“虚”基类子对象的重复。
  3. 构造函数与析构函数

    • 基类的构造函数不能被继承。当创建派生类对象时,首先调用基类的构造函数,然后调用派生类的构造函数。
    • 析构函数的调用顺序与构造函数相反,首先调用派生类的析构函数,然后调用基类的析构函数。
  4. 重载与重写(Overloading and Overriding)

    • 派生类可以重载基类的成员函数,也可以重写(override)基类的虚函数。重写时使用 override 关键字(C++11 及以后)可以提高代码的可读性和安全性。
  5. 多态性(Polymorphism)

    • 基于继承和虚函数实现的多态性是 C++ 的一个重要特性,它允许程序在运行时决定调用哪一个函数。
  6. 访问控制与访问权限

    • 派生类不能访问基类的私有成员,但可以通过基类的公共或保护成员函数进行访问。
    • “使用基类作为接口”的设计理念往往需要使用公有继承。

示例

  1. class Base {
  2. public:
  3. void show() {
  4. std::cout << "Base class show function called." << std::endl;
  5. }
  6. virtual void display() {
  7. std::cout << "Base class display function called." << std::endl;
  8. }
  9. };
  10. class Derived : public Base {
  11. public:
  12. void show() {
  13. std::cout << "Derived class show function called." << std::endl;
  14. }
  15. void display() override {
  16. std::cout << "Derived class display function called." << std::endl;
  17. }
  18. };
  19. int main() {
  20. Base* b;
  21. Derived d;
  22. b = &d;
  23. b->show(); // 调用 Base 类的 show
  24. b->display(); // 调用 Derived 类的 display
  25. return 0;
  26. }

在上述示例中,b->display() 调用了派生类 Deriveddisplay 函数,因为 display 是一个虚函数,而 b 是指向 Derived 对象的 Base 类型指针。

通过理解和正确应用 C++ 的继承机制,你可以创建出复杂而灵活的对象之间的关系,使代码更具表达力,并简化程序修改和扩展的过程。

    遇到难题? "AI大模型GPT4.0、GPT" 是你的私人解答专家! 点击按钮去提问......
乏力 关注 已关注

最近一次登录:2024-11-20 23:26:32   

暂时还没有签名,请关注我或评论我的文章
×
免费图表工具,画流程图、架构图