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

鸿顺里网站建设公司美食网站开发详细设计

鸿顺里网站建设公司,美食网站开发详细设计,卡片式设计网站制作,美团网站开发形式假设有一个问题,类似于鸭子这样的动物有很多种,如企鹅和鱿鱼,它们也可能会有一些共同的特性。例如,我们可以有一个叫做 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/588846.html

相关文章:

  • 怎么选择赣州网站建设wordpress 单栏主题
  • 好用的海报设计网站上海网站备案流程
  • 快速网站模板公司简述网络营销与传统营销的区别
  • 南昌企业做网站设计离我最近的广告公司在哪里
  • 工作室推广网站wordpress页面布局修改器
  • 邹平建设网站学校网站的建设需求
  • 做职业测评的网站百度一下网址是多少
  • 厦门 网站建设 闽icp湖北省网站备案
  • 服务预约网站怎么建设网站建设必须买主机吗
  • 网站对网络营销的作用长沙专业做网站公司有哪些
  • 网站建设后如何放在网上wordpress安装器
  • 广州建设企业网站公司wordpress 会员投稿
  • 注册公司怎么取名字如何优化搜索引擎关键词
  • 吉林市网站建设公司重庆专业的网站建设公司
  • 国外网站流量查询建工网校官网app
  • 网站建设公司广告词芜湖有没有做网站的
  • 网站怎样做网银支付做网站的公司一般怎么培训销售
  • 外国建筑网站个体工商户注册公司流程和费用
  • 个人网站设计模板网站轮播图
  • 最好的免费网站空间怎么用记事本做钓鱼网站
  • 手机网站开发技术pdf没有icp许可证 举报一个准吗
  • 网站开发业务视频网站开发 博客园
  • 站点推广名词解释百度搜索量
  • 河北网站建设多少钱网站开发分析
  • 网站关键词排名优化系统泰安网络公司哪里找
  • 家居建材网站源码做网站要用什么软件图文教程
  • 宜昌平台网站建设h5页面制作案例
  • 农业网站建设方案 ppt乐平市网站建设
  • 网站开发毕设答辩软件网站建设公司
  • 门户网站运营厦门logo设计公司