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

网站设计开发网站google seo实战教程

网站设计开发网站,google seo实战教程,b2b网站系统建站系统,工商注册代办公司虚拟继承在一般的应用中很少用到,所以也往往被忽视,这也主要是因为在C中,多重继承是不推荐的,而一旦离开了多重继承,虚拟继承就完全失去了存在的必要 (因为这样只会降低效率和占用更多的空间,实…

 虚拟继承在一般的应用中很少用到,所以也往往被忽视,这也主要是因为在C++中,多重继承是不推荐的,而一旦离开了多重继承,虚拟继承就完全失去了存在的必要

因为这样只会降低效率和占用更多的空间,实在是一无是处)。
  以下面的一个例子为例:
  #include <iostream.h>
  #include <memory.h>
  class CA
  {
   int k; //为了便于说明后面的内存结构特别添加
  public:
   void f() {cout << "CA::f" << endl;}
  };
  class CB : public CA
  {
  };
  class CC : public CA
  {
  };
  class CD : public CB, public CC
  {
  };
  void main()
  {
   CD d;
   d.f();
  }
  当编译上述代码时,我们会收到如下的错误提示:
  error C2385: 'CD::f' is ambiguous
  即编译器无法确定你在d.f()中要调用的函数f到底是哪一个。这里可能会让人觉得有些奇怪,命名只定义了一个CA::f,既然大家都派生自CA,那自然就是调用的CA::f,为什么还无法确定呢?
  这是因为编译器在进行编译的时候,需要确定子类的函数定义,如CA::f是确定的,那么在编译CB、CC时还需要在编译器的语法树中生成CB::f,CC::f等标识,那么,在编译CD的时候,由于CB、CC都有一个函数f,此时,编译器将试图生成两个CD::f标识,显然这时就要报错了。(当我们不使用CD::f的时候,以上标识都不会生成,所以,如果去掉d.f()一句,程序将顺利通过编译)
  要解决这个问题,有两个方法:
  1、CD载函数f():此时由于我们明确定义了CD::f,编译器检查到CD::f()调用时就无需再像上面一样去逐级生成CD::f标识了;
  此时CD的元素结构如下:
  --------
  |CB(CA)|
  |CC(CA)|
  --------


  故此时的sizeof(CD) = 8;(CB、CC各有一个元素k)


  2、使用虚拟继承虚拟继承又称作共享继承,这种共享其实也是编译期间实现的,当使用虚拟继承时,上面的程序将变成下面的形式:
  #include <iostream.h>
  #include <memory.h>
  class CA
  {
   int k;
  public:
   void f() {cout << "CA::f" << endl;}
  };
  class CB : virtual public CA
  {
  };
  class CC : virtual public CA
  {
  };
  class CD : public CB, public CC
  {
  };
  void main()
  {
   CD d;
   d.f();
  }
  此时,当编译器确定d.f()调用的具体含义时,将生成如下的CD结构:
  ----
  |CB|
  |CC|
  |CA|
  ----


  同时,在CB、CC中都分别包含了一个指向CA的vbptr(virtual base table pointer),其中记录的是从CB、CC的元素到CA的元素之间的偏移量。此时,不会生成各子类的函数f标识,除非子类重载了该函数,从而达到“共享”的目的。
  也正因此,此时的sizeof(CD) = 12(两个vbptr + sizoef(int));
  所有这一切都是编译期间决定的,只是编译器为了提供这样一个新的语法功能为我们多作了一些事情而已。
  注:以上讨论限MS Visual C++编译器。

http://www.lbrq.cn/news/2501461.html

相关文章:

  • 有什么牌子网站是响应式线上推广软件
  • 建站网站排行榜百度推广登录地址
  • 做网站业务的怎么寻找客户国外免费舆情网站有哪些软件
  • 专门做网站搜索优化的公司百度建站
  • 网站举报在哪举报石家庄seo扣费
  • 如何攻击网站深圳网络推广专员
  • 网站通内容管理系统指定关键词seo报价
  • 网站建设学生兼职刷赞抖音推广网站
  • 环保公司网站建设宣传图片网站查询器
  • 没学过计算机开始学做网站百度医生在线问诊
  • 郑州网站建设 推广seo外包公司费用
  • php网站用的是什么语言写的玄幻小说百度风云榜
  • 新疆网站建设咨询北京seo工程师
  • 优秀网站的特点百度竞价推广流程
  • 做婚恋交友网站模板快速排名优化推广手机
  • 网站建设 点指成名广州中小企业seo推广运营
  • 完整域名展示网站源码百度浏览器下载安装2023版本
  • ios wordpress连接站点简述什么是网络营销
  • 电子商务seo招聘seo快速排名软件网址
  • wordpress修改描述国外搜索引擎优化
  • 个人可以做公益网站吗爱站长
  • 网站建设合同 免责声明重庆网站外包
  • 网站制作有哪些种类seo标题优化关键词
  • 用bs做网站谷歌官网下载
  • 学网站ui设计网络热词2021流行语
  • 网站建设需要哪些工具与知识seo独立站
  • 网站做管理后台需要知道什么长沙百度搜索网站排名
  • 用别人的二级域名做网站app推广代理加盟
  • 有谁会设制网站免费引流微信推广
  • 网站开发 确认函南京百度推广
  • vue怎么实现导入excel表功能
  • 「源力觉醒 创作者计划」_文心大模型4.5系列开源模型,意味着什么?对开发者、对行业生态有何影响?
  • mybatis-plus实体类主键生成策略
  • solidity从入门到精通 第六章:安全第一
  • 零基础学习性能测试第三章:jmeter性能组件应用(事件,并发,定时器)
  • Ubuntu系统 系统盘和数据盘扩容具体操作