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

要详细的定义和解答谢谢2楼的大侠,我理解你的例子,也明白它的意思。不过我需要的是一段文字回答这个试题。。。。就是标准答案那种。。... 要详细的定义和解答 谢谢
2楼的大侠,我理解你的例子,也明白它的意思。
不过我需要的是一段文字回答这个试题。。。。就是标准答案那种。。
展开
 我来答
小张聊变美
高粉答主

2019-05-21 · 关注我不会让你失望
知道小有建树答主
回答量:2303
采纳率:100%
帮助的人:74.8万
展开全部

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

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

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

扩展资料

使用虚基类注意事项

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

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

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

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

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

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

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

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

cdma980
推荐于2017-10-10 · TA获得超过1444个赞
知道小有建树答主
回答量:1164
采纳率:0%
帮助的人:816万
展开全部
在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,具有相同的值.
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友b7bbbcdc2
2008-12-03 · TA获得超过3195个赞
知道小有建树答主
回答量:1508
采纳率:0%
帮助的人:1525万
展开全部
由于2楼的原因,VC以及很多C++编译器不支持多基类继承。

但VC还是有虚基类的。用于一个定义的类,但不能生成实例。
比如学校管理系统,其中有学生、老师、校工。三个类,这三个类都是从“人”这个基类继承出的。但在系统中,只允许前面三个类的实例。
不能直接定义“人”这个类的实例
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
追悔七年
2008-12-02 · TA获得超过587个赞
知道小有建树答主
回答量:251
采纳率:66%
帮助的人:267万
展开全部
虚基类?我想多半是由纯虚函数构成的类,这样的类一般用于接口,比如编写active控件的接口
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
IT168
2022-07-29 · 百度认证:IT168官方账号,优质数码领域创作者
IT168
IT168是中国最大的个人和企业IT产品选购、互动网站,每日提供最新的IT产品报价、促销行情、手机、平板、笔记本、相机和企业等50个频道提供最专业的产品选购和使用建议。
向TA提问
展开全部
虚基类主要提供一个基类给派生类
虚基类是被共享的,也就是在继承体系中无论被继承多少次,对象内存模型中均只会出现一个虚基类的子对象(这和多继承是完全不同的),这样一来既然是共享的那么每一个子类都不会独占,但是总还是必须要有一个类来完成基类的初始化过程(因为所有的对象都必须被初始化,哪怕是默认的),同时还不能够重复进行初始化
  • 官方服务
    • 官方网站
    • 官方网站
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式