C++继承

继承是C++面向对象编程中非常重要的一个特性,它可以让子类继承父类的数据和方法。本文将通过示例代码介绍C++继承的相关用法。

一、继承的基本语法

使用冒号”: “表示一个类继承自另一个类:

class Father {
  // ...
};

class Son : public Father {
  // ... 
};

Son继承了Father,得到了Father的所有非私有成员。

二、继承方式

  • public继承:父类public和protected成员保持原有访问权
  • private继承:父类所有成员在子类中全部为private
  • protected继承:父类public成员在子类中为protected

三、构造函数和析构顺序

子类构造先调用父类构造,析构相反:

class Base {
public:
  Base() { 
    cout << "Base构造" << endl;
  }
  ~Base() {
    cout << "Base析构" << endl;
  }
};

class Derived: public Base {
public:
  Derived() {
    cout << "Derived构造" << endl;
  }
  ~Derived() {
    cout << "Derived析构" << endl;
  }
};

// 输出结果:
// Base构造
// Derived构造 
// Derived析构
// Base析构

四、访问父类成员

使用作用域运算符 :: 可以访问从父类继承的成员:

class Base {
public:
  void func() {} 
};

class Derived: public Base {
public:
  void foo() {
    Base::func(); // 调用父类函数
  }
};

五、多继承

C++支持一个类同时继承多个类:

class A { };

class B { }; 

class C : public A, public B { };

多继承可以继承多个类的行为,但也会增加复杂度。

总结来说,继承是C++面向对象编程中非常强大的一个特性,它沿袭了封装的优势,又获得了父类的复用性。合理运用继承可以减少代码冗余,提高代码复用,降低维护成本。