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

卡密网站怎么做中国数据网站空间

卡密网站怎么做,中国数据网站空间,邯郸互联网公司,h5开发软件假设有一个问题,类似于鸭子这样的动物有很多种,如企鹅和鱿鱼,它们也可能会有一些共同的特性。例如,我们可以有一个叫做 AquaticBird (涉禽,水鸟的一类)的类,它又继承自 Animal 和 Sw…

假设有一个问题,类似于鸭子这样的动物有很多种,如企鹅和鱿鱼,它们也可能会有一些共同的特性。例如,我们可以有一个叫做 AquaticBird (涉禽,水鸟的一类)的类,它又继承自 Animal 和 SwimmingAnimal,就像这样:

class AquaticBird : public Animal, public SwimmingAnimal {  // AquaticBird类既是Animal也是SwimmingAnimal  
};  

如果我们同时继承了这两个类,像下图所示,将发生菱形继承:

        Animal  /      \
FlyingAnimal   AquaticBird  \      /  Duck  

在这个结构中,Duck 既继承了 FlyingAnimal,也间接继承了 Animal 通过 AquaticBird 的方式。问题在于,如果我们试图调用 Animal 类的方法,例如 eat(),Duck 会造成二义性:它不清楚是通过哪个路径来调用 Animal 类的实例。

那么如何解决菱形继承问题呢

解决菱形继承问题

通过使用 虚继承,我们可以确保在最终的 Duck 类中,只有一个 Animal 的实例。


class Animal {  
public:  void eat() {  std::cout << "Eating food." << std::endl;  }  
};  
class FlyingAnimal : virtual public Animal { // 使用virtual  
public:  void fly() {  std::cout << "Flying." << std::endl;  }  
};  
class SwimmingAnimal : virtual public Animal { // 使用virtual  
public:  void swim() {  std::cout << "Swimming." << std::endl;  }  
};  
class Duck : public FlyingAnimal, public SwimmingAnimal {  // Duck类继承自FlyingAnimal和SwimmingAnimal  
};  

现在,当 Duck 类调用 eat() 方法时,编译器知道只有一份 Animal 的实例,从而避免了二义性。

那么虚继承的底层实现原理是什么呢?

g++ -fdump -class-hlerarchy *.cpp gcc8.0之前

g++ fdump -lang - class *.cpp gcc8.0及以后

通过虚表指针偏移来实现虚继承

父类的vptr都有到共同基类的偏移量,从而让子类多继承是指向同一个“父类的父类”

只有C++有菱形继承

一般不使用菱形继承,但在库里面使用了

如下所示,下面的箭头都是继承,我们就会发现中间出现了菱形继承,iostream继承了istream和ostream。

http://www.dtcms.com/wzjs/786589.html

相关文章:

  • 中国常用网站网址查询公司的app
  • wordpress整站密码青岛高端网站建设
  • 怎样让网站显示网站建设中大连 网站制作 外贸
  • 临邑网站开发浙江网站建设哪里好
  • 网站设计合同广州搜索排名优化
  • 一个人做企业网站要多少天优秀室内设计作品
  • 个人网站建设与实现毕业设计网站建设销售技巧和话术
  • 电子商务网站建设思维导图博客网站开发源代码
  • 浙江质监站网址简述建设一个商务网站的过程
  • 烘焙食品网站建设需求分析外贸做网站建设哪家好
  • oa网站模板付网站建设服务费什么科目
  • 模板网站的弊端网站seo的关键词排名怎么做的
  • 备案信息 网站名临沂建设网
  • 做网站包含什么职位长治建设工程交易网
  • 佛山市企业网站建设哪家好关键词优化排名用什么软件比较好
  • 建筑公司网站首页图片注册公司网站地址该如何填
  • 动态效果的网站建设技术wordpress sensica
  • 个人免费网站深圳网站建设推广优化公司
  • 东莞制作网站的联系方式四川省住房和建设厅网站
  • 云建造网站互联网网站如何做流量统计
  • 泰安网站建设如何做英文的小说网站有哪些
  • 关于做网站的总结长沙企业网站
  • 做团餐 承包食堂的企业网站html5快速建站
  • 重庆建设工程信息网官网首页寿光网站建设优化
  • 网页设计与网站建设教学视频网站时间特效
  • 包头住房和城乡建设厅网站网络运营管理
  • 大连做网站孙晓龙秦皇岛城乡建设局和住建局官网
  • 网站做301需要备案吗注册一个公司
  • 做网站网络公司无收入济南定制网站建设
  • 金华网站建设制作免费查企业法人