c++ 抽象类 多继承 构造析构顺序简介

抽象类

纯虚函数,虚函数后面加 = 0

含有至少一个纯虚函数的类称之为抽象类

抽象类不能实例化对象

纯虚函数声明不能含有函数体,函数体可以放在类外

纯虚析构函数必须有函数体

如果子类没有重写父类的纯虚函数,子类仍然是个抽象类

应用  规范化派生类的接口,和某些不适合生成对象的父类

 

Overridefinal

Override

如果子类重写了父类的虚函数,可以使用override来说明

Override不能用于一般的成员函数和子类自己的虚函数

Final

不允许子类重写父类函数

 

多重继承

语法

子类会继承所以父类的数据和成员函数

内存

先父类后子类

父类的内存排序顺序受继承顺序的影响

 

指针转换

当子类对象赋给父类指针的时候,会自动转换为父类位于子类内存中的首地址

This指针也会发生类似的转换

 

菱形继承

 

子类有两份基类的数据

 

虚继承解决菱形继承的问题

 

虚继承中,虚基类的数据只有一份放在对象的末尾

 

 

构造析构的顺序

先构造父类后构造子类

构造顺序受继承顺序影响

析构的顺序与构造相反

 

构造析构的顺序

先构造虚基类,在构造中间父类,最后构造子类

跟构造的顺序相反

posted @ 2020-09-04 11:06  特权E5  阅读(342)  评论(0编辑  收藏  举报