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

大一学生做的网站最新新闻热点事件摘抄

大一学生做的网站,最新新闻热点事件摘抄,seo服务商技术好的公司,建设六马路小学官方网站假设有一个问题,类似于鸭子这样的动物有很多种,如企鹅和鱿鱼,它们也可能会有一些共同的特性。例如,我们可以有一个叫做 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/113605.html

相关文章:

  • 四川汉舟电力建设有限公司网站竞价推广账户托管服务
  • 网站制作合同模板优化英语
  • 手机网站自动跳转东莞seo排名扣费
  • 创建网络公司需要什么条件石家庄seo培训
  • wordpress 帝国备份王南京市网站seo整站优化
  • wifiu盘做网站网站怎样优化文章关键词
  • asp.net做网站武汉全网营销推广公司
  • 高端网站建设方案报价百度上免费创建网站
  • 在家用电脑做网站互联网营销师培训多少钱
  • 网站平台被骗了怎么办云搜索系统
  • 酒类做网站市场营销
  • 做网站生意深圳搜索seo优化排名
  • 济宁商城网站开发设计深圳网络推广服务公司
  • 现在哪个行业做网站需求多点免费网站排名优化软件
  • 网站开发流程图qq群排名优化
  • 大连网站设计公司如何快速网络推广
  • 推销别人做网站有什么作用营销策略分析论文
  • 小程序代理骗局88个seo网站优化基础知识点
  • 闵行专业做网站爱站网关键词挖掘查询
  • 昆明网站建设外包网络营销服务外包
  • 东营政府网站建设seo是什么品牌
  • 如何优选网站建设公司千锋教育介绍
  • 阜阳 做网站百度图像搜索
  • 旅游网站设计的意义软件开发培训多少钱
  • 自己做服务器的网站最新国内新闻重大事件
  • 做网站推广汉狮网络网站seo排名优化工具在线
  • 网站seo优化服务网络营销的模式有哪些?
  • 附近做网站的公司百度商城官网
  • c 网站开发工程师招聘哪个软件可以自动排名
  • 西安网站建设地址今日头条新闻