什么叫做虚基类,它有何作用

要详细的定义和解答 谢谢
2楼的大侠,我理解你的例子,也明白它的意思。
不过我需要的是一段文字回答这个试题。。。。就是标准答案那种。。

在多条继承路径上有一个公共的基类,在这些路径中的某几条汇合处,这个公共的基类就会产生多个实例(或多个副本),若只想保存这个基类的一个实例,可以将这个公共基类说明为虚基类。

虚继承 是面向对象编程中的一种技术,是指一个指定的基类,在继承体系结构中,将其成员数据实例共享给也从这个基类型直接或间接派生的其它类。

虚拟继承是多重继承中特有的概念。虚拟基类是为解决多重继承而出现的。

扩展资料

使用虚基类注意事项

(1) 一个类可以在一个类族中既被用作虚基类,也被用作非虚基类。

(2) 在派生类的对象中,同名的虚基类只产生一个虚基类子对象,而某个非虚基类产生各自的子对象。

(3) 虚基类子对象是由最远派生类的构造函数通过调用虚基类的构造函数进行初始化的。

(4) 最远派生类是指在继承结构中建立对象时所指定的类。

(5) 派生类的构造函数的成员初始化列表中必须列出对虚基类构造函数的调用;如果未列出,则表示使用该虚基类的缺省构造函数。

(6) 从虚基类直接或间接派生的派生类中的构造函数的成员初始化列表中都要列出对虚基类构造函数的调用。但仅仅用建立对象的最远派生类的构造函数调用虚基类的构造函数,而该派生类的所有基类中列出的对虚基类的构造函数的调用在执行中被忽略,从而保证对虚基类子对象只初始化一次。

(7) 在一个成员初始化列表中同时出现对虚基类和非虚基类构造函数的调用时,虚基类的构造函数先于非虚基类的构造函数执行。

参考资料来源  百度百科-虚基类

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-10-10
在C++中,如果在多条继承路径上有一个公共的基类,那么在这些路径中的某几条路径的汇合处,这个公共的基类就会产生多个实例.如果想使这个公共的基类只产生一个实例,则可将这个基类说明为虚基类. 这要求在从base类派生新类时,使用关键字virtual将base类说明为虚基类.

用例子说明吧。

class base{protected:int b};
clase base1:public base{..};
clase base2:public base{..};

clase derived:public base1,public base2 {..};

derived d;
d.b //错误.
d.base::b //错误. 因为不知是用d.base1::b还是d.base2::b
=================================================
class base{protected:int b..};
clase base1:virtual public base{..}; //说明base为虚基类
clase base2:virtual public base{..}; //说明base为虚基类

clase derived:public base1,public base2 {..};

derived d;
d.b //对.
d.base::b //对. 因为d.base::b和d.base1::b还是d.base2::b都是引用同一虚基类成员b,具有相同的值.本回答被提问者采纳
第2个回答  2008-12-03
由于2楼的原因,VC以及很多C++编译器不支持多基类继承。

但VC还是有虚基类的。用于一个定义的类,但不能生成实例。
比如学校管理系统,其中有学生、老师、校工。三个类,这三个类都是从“人”这个基类继承出的。但在系统中,只允许前面三个类的实例。
不能直接定义“人”这个类的实例
第3个回答  2008-12-02
虚基类?我想多半是由纯虚函数构成的类,这样的类一般用于接口,比如编写active控件的接口
第4个回答  2022-07-29
虚基类主要提供一个基类给派生类
虚基类是被共享的,也就是在继承体系中无论被继承多少次,对象内存模型中均只会出现一个虚基类的子对象(这和多继承是完全不同的),这样一来既然是共享的那么每一个子类都不会独占,但是总还是必须要有一个类来完成基类的初始化过程(因为所有的对象都必须被初始化,哪怕是默认的),同时还不能够重复进行初始化
    官方服务
      官方网站官方网站

什么叫做虚基类,它有何作用
总的来说,虚基类是面向对象编程中一个实用的工具,通过它,我们可以有效地管理多重继承的复杂性,并确保资源的高效利用。

什么叫做虚基类,它有何作用
虚函数是用于多态中virtual修饰父类函数,确保父类指针调用子类对象时,运行子类函数的。.虚基类是用来在多继承中,如果父类继承自同一个父类,就只实例化一个父类(说的有点绕,就是只实例化一个爷爷的意思。设置虚基类的目的是提高程序运行效率。当在多条继承路径上有一个公共的基类,在这些路径中...

什么叫做虚基类,它有何作用
在多继承的情况下,当存在一个公共的基类在不同继承路径中频繁出现,且可能会导致多个实例或副本,这时候通过将这个基类设为虚基类可以解决这个问题。虚基类的核心目标是确保内存中只有一个基类的实例,消除了因多重继承导致的歧义。通过在继承声明中使用`virtual`关键字,我们可以实现这一目的。例如:当遇...

什么叫做虚基类,它有何作用
虚继承 是面向对象编程中的一种技术,是指一个指定的基类,在继承体系结构中,将其成员数据实例共享给也从这个基类型直接或间接派生的其它类。虚拟继承是多重继承中特有的概念。虚拟基类是为解决多重继承而出现的。

C++中虚函数的作用是什么?它应该怎么用呢?
C++中虚函数的作用:1、为了方便使用多态特性,我们常常需要在基类中定义虚拟函数。2、在很多情况下,基类本身生成对象是不合情理的。例如,动物作为一个基类可以派生出老虎、孔雀等子类,但动物本身生成对象明显不合常理。为了解决上述问题,引入了纯虚函数的概念,将函数定义为纯虚函数(方法:virtual ...

C++中的虚函数和JAVA中的抽象方法有什么区别?
虚函数 --- 普通函数 纯虚函数 --- 抽象函数 抽象类 --- 抽象类 虚基类 --- 接口 纯虚函数: 主要特征是不能被用来声明对象,是抽象类,是用来确保程序结构与应用域的结构据具有直接映射关系的设计工具。带有纯虚函数的类称为抽象类,抽象类能被子类 继承使用,在子类中必须给出纯虚函数的实现...

C++考题中提到纯虚拟函数是什么概念?起什么作用?
纯虚函数是在基类中声明的虚函数,它可以在基类中有定义,而且派生类必须定义自己的实现方法。基类不能生成对象,可以使用指针或者引用派生类对象。基类不在基类中实现纯虚函数的方法是在函数原型后加“=0”virtual void funtion1()=0 引入原因\/纯虚函数的作用 为了方便使用多态特性,我们常常需要在基类...

什么叫做迟后联编?
那个表叫做vtbl,每个类都有自己的vtbl,vtbl的作用就是保存自己类中虚函数的地址,我们可以把vtbl形象地看成一个数组,这个数组的每个元素存放的就是虚函数的地址.指针叫做vptr,指向那个表。而这个指针保存在相应的对象当中,也就是说只有创建了对象以后才能找到相应虚函数的地址。对于模板类也是同理 ...

C++多态性实验 定义一个抽象类—容器内container,其中定义了若干纯虚...
using namespace std;class container \/\/定义抽象类conyainer {public:container(...)virtual xx(){}; \/\/虚函数 virtual xx(){}; \/\/虚函数 virtual void xxx() const =0; \/\/纯虚函数 private:...};class xxxx:public container \/\/公用派生类xxxx {public:vitual xxxxx{...} \/\/对虚函数...

什么叫做虚基类,它有何作用
虚函数是用于多态中virtual修饰父类函数,确保父类指针调用子类对象时,运行子类函数的。.虚基类是用来在多继承中,如果父类继承自同一个父类,就只实例化一个父类(说的有点绕,就是只实例化一个爷爷的意思。设置虚基类的目的是提高程序运行效率。当在多条继承路径上有一个公共的基类,在这些路径中...

相似回答