当前位置: 首页 > news >正文

网站开发最新书籍赣州科技有限公司

网站开发最新书籍,赣州科技有限公司,网站编辑软件都有哪些,找工作一般上什么网站比较好多重继承 是指从多个直接基类中产生派生类的能力。多重继承的派生类继承了所有父类的属性。 多重继承 在派生类的派生列表中可以包含多个基类: class Bear : public zooAnimal { class Panda : public Bear, public Endangered{/* ...*/};每个基类包含一个可选的…

多重继承 是指从多个直接基类中产生派生类的能力。多重继承的派生类继承了所有父类的属性。

多重继承

在派生类的派生列表中可以包含多个基类:

class Bear : public zooAnimal {
class Panda : public Bear, public Endangered{/* ...*/};

每个基类包含一个可选的访问说明符。如果说明符被忽略掉了,则关键字class对应的默认访问说明符是private,关键字struct对应的是public

多重继承的派生列表只能包含已经被定义过的类,而且这些类不能是final的。

多重继承的派生类从每个基类中继承状态

在多重继承关系中,派生类的对象包含有每个基类的子对象。
在这里插入图片描述

派生类构造函数初始化所有基类

构造一个派生类的对象将同时构造并初始化它的所有基类子对象。
与从一个基类进行的派生一样,多重继承的派生类的构造函数初始值也只能初始化它的直接基类。

//显式地初始化所有基类
Panda::Panda(std::string name, bool onExhibit):Bear(nane,onExhibit,"Panda"), Endangered(Endangered::critical) {	}
//隐式地使用Bear的默认构造函数初始化Bear子对象
Panda::Panda():Endangered (Endangered::critical){	}

派生类的构造函数初始值列表将实参分别传递给每个直接基类。
其中基类的构造顺序与派生列表中基类的出现顺序保持一致,而与派生类构造函数初始值列表中基类的顺序无关。

析构函数与多重继承

派生类的析构函数只负责清除派生类本身分配的资源,派生类的成员及基类都是自动销毁的。合成的析构函数体为空。
析构函数的调用顺序正好与构造函数相反。

多重继承的派生类的拷贝与移动操作

与只有一个基类的继承一样,多重继承的派生类如果定义了自己的拷贝/赋值构造函数和赋值运算符,则必须在完整的对象上执行拷贝、移动或赋值操作。
只有当派生类使用的是合成版本的据拷贝、移动或赋值成员时,才会自动对其基类部分执行这些操作。在合成的拷贝控制成员中,每个基类分别使用自己的对应成员隐式地完成构造、赋值或销毁等工作。

类型转换与多个基类

在只有一个基类的情况下,派生类的指针或引用能自动转换成一个可访问基类的指针或引用。
可以令某个可访问基类的指针或引用直接指向一个派生类对象。

基于指针类型或引用类型的查找

与只有一个基类的继承一样,对象、指针、引用的静态类型决定了能够使用哪些成员。
如果使用了基类 Base1 的指针,则只有定义在 Base1 中的操作是可以使用的。

ZooAnimal/Endangered中定义的虚函数

在这里插入图片描述

多重继承下的类作用域

在只有一个基类的情况下,派生类的作用域嵌套在直接基类和间接基类的作用域中。
查找过程沿着继承体系自底向上进行,直到找到所需的名字。派生类的名字将隐藏基类的同名成员。

当一个类拥有多个基类时,有可能出现派生类从两个或更多基类中继承了同名成员的情况。此时,不加前缀限定符直接使用该名字将引发二义性。

虚继承

尽管在派生列表中同一个基类只能出现一次,但实际上派生类可以多次继承同一个类。派生类可以通过它的两个直接基类分别继承同一个间接基类,也可以直接继承某个基类,然后通过另一个基类再一次间接继承该类。

在默认情况下,派生类中含有继承链上每个类对应的子部分。如果某个类在派生过程中出现了多次,则派生类中将包含该类的多个子对象。

虚派生只影响从指定了虚基类的派生类中进一步派生出的类,它不会影响派生类本身。

当包含多个基类的子对象时,访问基类的成员会出现二义性问题。

指定虚基类的方式是在派生列表中添加关键字virtual

//关键字public和virtual的顺序随意
class Raccoon : public virtual ZooAnimal{/* ...*/];
class Bear : virtual public ZooAnimal{/*...*/ };

virtual说明符表明了一种愿望,即在后续的派生类当中共享虚基类的同一份实例。

不论基类是不是虚基类,派生类对象都能被可访问基类的指针或引用操作。

虚基类(Virtual Base Class)的成员在派生类中的可见性遵循以下规则:

1. 虚基类的成员在最终派生类中是可见的:虚基类的成员在最终继承自虚基类的派生类中是可见的,可以直接访问。这是虚基类的主要目的之一,确保只有一个实例(子对象)存在,因此其成员不会重复出现。
2. 如果虚基类的成员在派生类中产生二义性,需要使用限定符解决:如果虚基类的成员在最终派生类中产生了名称冲突或二义性,可以使用限定符来指定要访问的虚基类的成员。

class Base {
public:int data;
};class VirtualBase : public virtual Base {
};class Derived1 : public VirtualBase {
};class Derived2 : public VirtualBase {
};class MostDerived : public Derived1, public Derived2 {
public:void AccessData() {// 通过限定符指定要访问的虚基类成员int value = VirtualBase::data;}
};

构造函数与虚继承

在虚派生中,虚基类是由最低层的派生类初始化的。

虚继承的对象的构造方式

含有虚基类的对象的构造顺序与一般的顺序稍有区别:首先使用提供给最低层派生类构造函数的初始值初始化该对象的虚基类子部分,接下来按照直接基类在派生列表中出现的次序依次对其进行初始化。

虚基类总是先于非虚基类构造,与它们在继承体系中的次序和位置无关。

一个类可以有多个虚基类。这些虚基类子对象按照它们在派生列表中出现的顺序依次构造。

http://www.yayakq.cn/news/542819/

相关文章:

  • 码云可以做博客网站吗网站里的横幅怎么做
  • 微信微网站模板下载有什么软件可以制作图片
  • 值得浏览的外国网站做建筑设计网站
  • 衡水哪儿专业做网站卢龙网站建设
  • 品牌网站建设推荐乐云seo沈阳网站建设模块
  • 做百度竞价对网站空间有什么要求北京赛车网站开发
  • wordpress淘宝客建站电子商务网站建设第三章答案
  • 企业产品推广网站手机社区网站模板
  • 网站建设叁金手指花总2seo电商
  • 张家港做网站优化价格推荐个2021能看的网站免费
  • 网站文站加入别人网站的链接是否对自己网站不好网络营销的主要推广方式
  • 重庆网站快速排名提升天津建设工程信息网工程交易中心
  • saas建站没有网站源代码么wordpress函数
  • 包头网站公司欧美专业牙科医院网站网页源码
  • 网站正在建设中 htmll长春网站建设wang
  • 宿迁建设网站宁波网页设计找哪家
  • 诸暨哪些公司可以制作网站论坛网站推广方案
  • 自己做网站还是开通阿里巴巴诚信通浙江住房和城乡建设网站
  • 网站建设及维护专业大连模板网站制作服务
  • 网站访问量大打不开网站建设优化的书籍
  • 八里河风景区网站建设设计概述游戏动漫设计与制作
  • 建设协会官方网站律师咨询免费24小时在线
  • 做网站每个月可以赚多少网站原则
  • 苏州建设网站的公司服装定制图片
  • 土耳其网站后缀页面菜单 wordpress
  • 制作网站的公司注册资本要多少电商课程培训
  • 网架加工图沈阳做网站优化哪家好
  • 兴城做网站推广的本地主机做网站
  • 专做尼泊尔的旅行网站怎样做软件开发
  • 网站系统参数设置照片网站模版