今天我们来谈谈C++的继承与多态😊😊😊,本篇的关键内容如下:
- 继承的本质及其原理
- 派生类的构造和析构过程
- 重载、隐藏和覆盖
- 类的向下或向上转型
- 静态绑定与动态绑定
- 虚函数对类的影响
- 虚析构函数
下面,我们将对这几个有关于C++继承与多态的关键内容进行详述的论述
浅谈C++的继承与多态
一、继承的本质及其原理
在C++中,继承是一种面向对象编程思想的概念,允许一个类继承另一个类的属性和方法,同时也可以在此基础上添加新的属性和方法。究其本质,即:
- 代码的复用
- 在基类中给所有派生类提供一个统一的接口,让派生类重写,满足开闭原则
二、派生类的构造和析构过程
在定义的派生类中,由于派生类是从基类的基础上继承过来的,对应继承而来的成员的初始化和清理是由基类的构造函数和析构函数负责,而派生类的构造和析构函数则负责初始化和清理派生类中特定的部分,所以在派生类调用构造函数需要初始化基类里的成员变量时,不能直接指定,而是需要通过基类的构造函数来进行初始化,如下:
class Base
{
public:
Base(int d) :ma(d) {
cout << "Base()" << endl; }
~Base() {
cout << "~Base()" << endl; }
protected:
int ma;
};
class Derive :public Base
{
public:
//Derive(int d = 20) :ma(d), mb(d) {cout << "Derive()" << endl;}
//此句会出现报错:"ma" 不是类 "Derive" 的非静态数据成员或基类
Derive(int d = 20) :Base(d), mb(d) {
cout << "Derive()" << endl;}
~Derive() {
cout << "~Derive()" << endl; }
private:
int mb;
};
这里我们给出一段关于派生类构造和析构过程的主要描述:
- 派生类调用基类的构造函数,初始化从基类继承而来的成员
- 调用派生类自己的构造函数,初始化派生类自己特有的成员
- 调用派生类的析构函数,释放派生类成员可能占用的外部资源(堆空间、文件等)
- 调用基类的构造函数,释放派生类内存中从基类继承而来的成员可以占用的外部资源(堆空间、文件等)
int main()<