目录
前言
虚基类的作用
虚基类的声明
虚基类的初识化
前言
在上一篇的文章中我们知道了, C++语言是知识多继承的,并且一个子类可以有多个父类子类,拥有所有父类的成员变量,子类会继承父类的所有成员函数,而且子类的对象也可以被父类的任意对象使用
虚基类的作用
如果一个类中有多个直接的基类,并且这些直接的基类又有有一个共同的基类,则在最低层的派生类中就会保留这个间接的共同基类数据成员的多份同名成员,在我们下次访问,这些同名成员的时候,必须在派生类的对象名后直接增加基类名,并唯一的标识一个成员,这样会避免产生二义性
虚基类的声明
从之前的声明我们不难理解,如果类中只存在一个拷贝,(就是说如果只存在一个数据成员X)那么对X的访问就不会产生二义性,在C++中我们可以通过对这个公共的基类声明为虚基类来解决这个问题,这就会使用到我们接下来要讲解的关键字virtual ,virtual可以将一个类声明为虚基类
声明虚基类的语法形式如下:
class 派生类名:virtual 继承方式 类名{ ………… }
虚基类的初识化
虚基类的初始化与一般的多继承的初始化上的语法是一样的,但是要注意的一点是构造函数的调用顺序不同,在使用虚机类的机制时,应该注意以下的这几点 :