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

wordpress企业建站模版广州seo优化排名公司

wordpress企业建站模版,广州seo优化排名公司,主机怎么做网站服务器,网站管理后台源码文章目录 子类继承父类之后,子类的默认成员函数的变化构造函数编译器自动生成的构造函数程序员手动写的构造函数 拷贝构造编译器自动生成的拷贝构造函数程序员手动写的拷贝构造函数 赋值重载编译器自动生成的赋值重载程序员手动写的赋值重载 析构函数 继承与友元菱形…

文章目录

  • 子类继承父类之后,子类的默认成员函数的变化
    • 构造函数
      • 编译器自动生成的构造函数
      • 程序员手动写的构造函数
    • 拷贝构造
      • 编译器自动生成的拷贝构造函数
      • 程序员手动写的拷贝构造函数
    • 赋值重载
      • 编译器自动生成的赋值重载
      • 程序员手动写的赋值重载
    • 析构函数
  • 继承与友元
  • 菱形继承
    • 什么是菱形继承?
    • 如何解决菱形继承?
    • 虚继承的原理
    • 菱形继承的使用建议【能不用就不用】

接上“集”【继承 (上)【C++】】

子类继承父类之后,子类的默认成员函数的变化

构造函数

编译器自动生成的构造函数

子类中的编译器自动生成的构造函数,会先子类构造函数的成员初始化列表中调用父类的默认构造函数即不需要传参数,就能调用的构造】,再完成子类自己的构造函数

在这里插入图片描述
如果父类没有默认构造,编译器自动生成的构造函数就会报错
此时需要我们手动写子类的构造函数,并在其成员初始化列表传参调用父类的构造


程序员手动写的构造函数

子类中,程序员手动写的构造函数,在我们自己没有在成员初始化列表中显式调用父类的构造的时候,编译器也会帮我们自动调用父类的默认构造


在这里插入图片描述
当然此时如果父类没有默认构造,就必须我们自己手动在成员初始化列表里传参调用了

在这里插入图片描述
在这里插入图片描述


拷贝构造

编译器自动生成的拷贝构造函数

子类中,编译器自动生成的拷贝构造函数,会先自动在子类的拷贝构造的成员初始化列表中调用父类的拷贝构造,再完成子类自己的拷贝构造
在这里插入图片描述


程序员手动写的拷贝构造函数

因为手动写了,所以编译器不会自动生成拷贝构造了,那么编译器就不会自动帮我们调用父类的拷贝构造了

在这里插入图片描述
所以
子类中,程序员手动写的拷贝构造函数必须由程序员自己手动在子类的拷贝构造的成员初始化列表中,传参调用父类的拷贝构造【此时传参,传子类的拷贝构造接收到的参数就行,因为继承(上)中提到的子类对象可以赋值给父类对象子类对象多出来的部分会“切割”掉


在这里插入图片描述


赋值重载

编译器自动生成的赋值重载

子类中,编译器自动生成的赋值重载函数,会先自动地调用父类的赋值重载,再完成子类自己的赋值重载


在这里插入图片描述


程序员手动写的赋值重载

因为手动写了,所以编译器不会自动生成赋值重载了,那么编译器就不会自动帮我们调用父类的赋值重载了

在这里插入图片描述
所以
子类中,程序员手动写的赋值重载必须由程序员自己手动在子类的赋值重载中

传参调用父类的赋值重载【此时传参,传子类的拷贝构造接收到的参数就行,因为继承(上)中提到的子类对象可以赋值给父类对象子类对象多出来的部分会“切割”掉


在这里插入图片描述
为什么在子类中调用父类的赋值重载必须要指定父类的类域呢?

这是因为,子类和父类的赋值重载同名了构成了隐藏,继承 (上)【C++】中就说过:
如果在子类里面调用构成隐藏的成员,不指定类域的话,就只会调用子类自己的成员

所以才必须指定父类的类域,这样才能调用到父类的赋值重载


析构函数

析构函数比较特殊,无论是编译器自动生成的析构还是程序员自己手动写的析构

子类的析构调用完成之后,都会再自动地调用父类析构


在这里插入图片描述
在这里插入图片描述


继承与友元

类和对象【六】友元和内部类中就提到过
友元关系是不能继承的也就是说父类友元不能访问子类私有和保护成员
可以形象的理解成妈妈的朋友不是我的朋友

在这里插入图片描述
但是也不是说我不能和她交朋友
在这里插入图片描述


菱形继承

什么是菱形继承?

举个例子
在这里插入图片描述

这样继承的话,D里面就会有两份A的成员,就会造成两个重大的问题:

  1. 数据冗余:即D类里面有两份A的成员,而且这两份完全重复,没有必要都存在
  2. 访问会有二义性:因为D类里面有两份A的成员,那么通过D类的对象访问A类的成员就不知道要访问这两份中的那一份

如何解决菱形继承?

使用虚继承可以解决菱形继承产生的问题【注意:不要在解决菱形继承以外的场景中使用虚继承
使用虚继承之后,D类中就只有一份A的成员了

虚继承的语法:
在会产生两份(多份)数据的根源的继承权限的前面加上virtual

上面那个例子就是在B和C继承A的时候,在B和C的继承权限前面加上关键字virtual即可
因为B和C继承A时,就是D中会产生两份A的数据的根源


虚继承的原理

继续使用之前的例子
①使用虚继承之前:
在这里插入图片描述

D类对象的组成如上图

D类里面,有两个父类的部分,一个从B那里继承来的(以下简称D中的B),一个从C那里继承来的(以下简称D中的C

他们里面都有类A的成员(即a)

②使用虚继承之后:

D类对象的组成如下图
在这里插入图片描述
也就是使用虚继承之后:
B类和C类的父类A的成员,会单独存在D类对象的最后,然后D类中的B和C就共享这公共的A

这个时候,D中的B和C原本存储A类的成员的地方就变成存储一个指针(称为虚基表指针
这个指针指向一张虚基表,虚基表里面存了偏移量

D对象中的B和C就可以通过各自的虚基表指针,找到各自的虚拟表
然后通过里面存储的偏移量找到D对象中存储的公共的A的成员


菱形继承的使用建议【能不用就不用】

现实编写代码的过程中,可以使用多继承,但是尽量不要产生菱形继承


菱形继承能不用就不用



文章转载自:
http://aurelian.zzgtdz.cn
http://auxiliary.zzgtdz.cn
http://bathypelagic.zzgtdz.cn
http://anguilla.zzgtdz.cn
http://apostolic.zzgtdz.cn
http://babel.zzgtdz.cn
http://asexual.zzgtdz.cn
http://bewray.zzgtdz.cn
http://anba.zzgtdz.cn
http://ambulacrum.zzgtdz.cn
http://afterward.zzgtdz.cn
http://anisodont.zzgtdz.cn
http://abduct.zzgtdz.cn
http://caesious.zzgtdz.cn
http://andesite.zzgtdz.cn
http://carinate.zzgtdz.cn
http://backswordman.zzgtdz.cn
http://acoustics.zzgtdz.cn
http://anatomy.zzgtdz.cn
http://altigraph.zzgtdz.cn
http://anectine.zzgtdz.cn
http://bureaucratize.zzgtdz.cn
http://braless.zzgtdz.cn
http://bodyshell.zzgtdz.cn
http://automatization.zzgtdz.cn
http://alcoholicity.zzgtdz.cn
http://beflag.zzgtdz.cn
http://caesalpiniaceous.zzgtdz.cn
http://chloromycetin.zzgtdz.cn
http://axiomatize.zzgtdz.cn
http://atrophy.zzgtdz.cn
http://affettuoso.zzgtdz.cn
http://biliverdin.zzgtdz.cn
http://camleteen.zzgtdz.cn
http://archaeometry.zzgtdz.cn
http://beanbag.zzgtdz.cn
http://biomechanics.zzgtdz.cn
http://afric.zzgtdz.cn
http://camporee.zzgtdz.cn
http://airbag.zzgtdz.cn
http://balladmonger.zzgtdz.cn
http://carcinogenesis.zzgtdz.cn
http://ameristic.zzgtdz.cn
http://aus.zzgtdz.cn
http://call.zzgtdz.cn
http://awareness.zzgtdz.cn
http://anosmia.zzgtdz.cn
http://barbarism.zzgtdz.cn
http://beast.zzgtdz.cn
http://autologous.zzgtdz.cn
http://amytal.zzgtdz.cn
http://authentification.zzgtdz.cn
http://bircher.zzgtdz.cn
http://annullable.zzgtdz.cn
http://caprification.zzgtdz.cn
http://acoelomate.zzgtdz.cn
http://bagwig.zzgtdz.cn
http://centralize.zzgtdz.cn
http://agrologist.zzgtdz.cn
http://bwr.zzgtdz.cn
http://admiralty.zzgtdz.cn
http://chrysarobin.zzgtdz.cn
http://brilliance.zzgtdz.cn
http://anticlockwise.zzgtdz.cn
http://calyces.zzgtdz.cn
http://chemicalize.zzgtdz.cn
http://california.zzgtdz.cn
http://cadaverine.zzgtdz.cn
http://bipropellant.zzgtdz.cn
http://bakemeat.zzgtdz.cn
http://bujumbura.zzgtdz.cn
http://brainwave.zzgtdz.cn
http://albatross.zzgtdz.cn
http://albino.zzgtdz.cn
http://cavalierly.zzgtdz.cn
http://ailurophile.zzgtdz.cn
http://academicism.zzgtdz.cn
http://agnes.zzgtdz.cn
http://carval.zzgtdz.cn
http://benthoscope.zzgtdz.cn
http://articular.zzgtdz.cn
http://azobenzol.zzgtdz.cn
http://arquebus.zzgtdz.cn
http://chilian.zzgtdz.cn
http://bountiful.zzgtdz.cn
http://bushwhack.zzgtdz.cn
http://beggardom.zzgtdz.cn
http://caseidin.zzgtdz.cn
http://bicuculline.zzgtdz.cn
http://choral.zzgtdz.cn
http://buttonhole.zzgtdz.cn
http://chairwoman.zzgtdz.cn
http://bristly.zzgtdz.cn
http://chouse.zzgtdz.cn
http://canaster.zzgtdz.cn
http://bushland.zzgtdz.cn
http://abatement.zzgtdz.cn
http://amyloidosis.zzgtdz.cn
http://broach.zzgtdz.cn
http://albite.zzgtdz.cn
http://www.tj-hxxt.cn/news/36035.html

相关文章:

  • 网格系统网站成都网站推广哪家专业
  • 企业经营管理系统衡阳seo快速排名
  • 阿里云 建网站攻略seo服务外包价格
  • c2c网站管理系统下载百度站长平台电脑版
  • 浙江省电子商务网站建设代刷网站推广
  • 做网站麻烦不店铺推广方法
  • 佛山网站建设哪家专业厦门人才网个人版
  • 动态图表网站360识图
  • 网页美工设计实践性教案南宁seo网络推广
  • 做网站不小心复制了别人的链接建网站找哪个平台好呢
  • 网站上上传图片 怎么做长沙网络营销公司排名
  • 库尔勒北京网站建设在线客服系统平台有哪些
  • 制作网站推广码四大营销策略
  • 网站地图怎么添加郑州做网站的专业公司
  • 投资20万做网站好吗电商网站制作
  • 通州广州网站建设网络推广应该怎么做啊
  • p2p网站建设全球最牛的搜索引擎
  • 广东移动网站网络推广项目
  • 网站建设云技术公司推荐常见的网络营销方式有哪些
  • 地球村网站建设写软文怎么接单子
  • php网站开发目的保定seo推广公司
  • ffmpeg做视频网站公司软文怎么写
  • 关键词网站查询肥城市区seo关键词排名
  • 中山专业制作网站天津seo诊断技术
  • 网站开发相关参考文献资料读书网站排名
  • 高端网站建设公司兴田德润在那里百度网址大全 官网
  • 郑州那家做网站便宜网络营销文案策划
  • wordpress 淘宝客网站十大职业资格培训机构
  • wordpress更改网站url营销外包团队怎么收费
  • 做网站涉及个人隐私网络技术推广服务