设置虚基类的目的是提高程序运行效率。
当在多条继承路径上有一个公共的基类,在这些路径中的某几条汇合处,这个公共的基类就会产生多个实例,若只想保存这个基类的一个实例,可以将这个公共基类说明为虚基类。
在继承中产生歧义的原因有可能是继承类继承了基类多次,如概述图所示,子类C最后会接受分别来自A和B的同一个或多个相同拷贝,从而产生了多个拷贝,即不止一次的通过多个路径继承类在内存中创建了基类成员的多份拷贝。
而这些是A和B从父类继承而来,所以C类该继承A还是B传下来的还是都接受呢?这样就产生歧义,虚基类的基本原则是在内存中只有基类成员的一份拷贝。这样,通过把基类继承声明为虚拟的,就只能继承基类的一份拷贝,从而消除歧义。
从虚基类直接或间接派生的派生类中的构造函数的成员初始化列表中都要列出对虚基类构造函数的调用。但仅仅用建立对象的最远派生类的构造函数调用虚基类的构造函数,而该派生类的所有基类中列出的对虚基类的构造函数的调用在执行中被忽略。
A.
简化程序,和纯虚函数没关系
B.
消除二义性。正解, 虚基类是为了强调"这个类型的某些方法没有意义, 只是为了继承, 不要构造这种类型的对象"
C.
提高运行效率 ,和纯虚函数没关系
D.
减少目标代码,纯虚函数和空函数相比相差也就是几个字节, 如果这也算的话确实是减少了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)