虚继承相关问题--笔试面试系列

来源:互联网 发布:超级玛丽for mac 编辑:程序博客网 时间:2024/06/09 14:31

1,

虚继承是多重继承的特有概念,为解决多继承而出现的。

如果B继承自A,C继承自A,且D同时继承自B和C,就会在类D中同时出现两次A。为了节省内存空间,可以将B、C对A的继承定义为虚继承。而A就成了虚拟基类。

代码如下:

class A;

class B: public virtual A;

class C: public virtual A;

class D: public virtual C;

例如:圆角矩形多重继承了圆形和矩形,而这两个都继承自形状类。那么当创建一个圆角矩形时会有两种情况,根据代码不同。

一是,圆形类和矩形类都没有使用关键字virtual继承自形状类,则生成两个形状类。

二是,如果两个类都使用关键字继承自形状类,则生成一个共享形状类。

注:虚函数继承与虚继承不同。

虚拟继承是多重继承中特有的概念,是为解决多重继承的。用虚继承可以节省内存空间虚函数是面向对象多态性的主要方式,通过继承基类中的虚函数在子类中重载实现不同操做。继承的虚函数在子类中不需要加virtual,默认就是虚函数。可以被它的子类覆盖。

问题:声明一个类Jet,它是从Ro和Ai继承来的。

答:class Jet: public Ro, Public Ai继承而来的。

原创粉丝点击