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

东莞产品网站建设公司百度竞价托管一月多少钱

东莞产品网站建设公司,百度竞价托管一月多少钱,seo优化工作怎么样,四川网站建设企业网站制作目录 一,菱形继承 1.1单继承 1.2多继承 1.3菱形继承 1.4菱形继承的问题 1.5虚拟继承解决数据冗余和二义性的原理 二.继承的总结和反思 一,菱形继承 C三大特性——继承-CSDN博客 1.1单继承 单继承:一个子类只有一个直接父类时称这个继…

目录

一,菱形继承

1.1单继承

1.2多继承

1.3菱形继承

1.4菱形继承的问题

1.5虚拟继承解决数据冗余和二义性的原理

二.继承的总结和反思


一,菱形继承

C++三大特性——继承-CSDN博客

1.1单继承

单继承:一个子类只有一个直接父类时称这个继承关系为单继承

1.2多继承

多继承:一个子类有两个或以上直接父类时称这个继承关系为多继承

1.3菱形继承

菱形继承:菱形继承是多继承的一种特殊情况

1.4菱形继承的问题

菱形继承的问题:从下面的对象成员模型构造,可以看出菱形继承有数据冗余和二义性的问题。在Assistant的对象中Person成员会有两份。

class Person
{
public:string _name; // 姓名
};
class Student : public Person
{
protected:int _num; //学号
};
class Teacher : public Person
{
protected:int _id; // 职工编号
};
class Assistant : public Student, public Teacher
{
protected:string _majorCourse; // 主修课程
};
void Test()
{// 这样会有二义性无法明确知道访问的是哪一个Assistant a;//a._name = "peter";  错误// 需要显示指定访问哪个父类的成员可以解决二义性问题,但是数据冗余问题无法解决a.Student::_name = "xxx";a.Teacher::_name = "yyy";
}

虚拟继承可以解决菱形继承的二义性和数据冗余的问题。如上面的继承关系,在Student和Teacher的继承Person时使用虚拟继承,即可解决问题。需要注意的是,虚拟继承不要在其他地方去使用

class Person
{
public:string _name; // 姓名
};
class Student : virtual public Person
{
protected:int _num; //学号
};
class Teacher : virtual public Person
{
protected:int _id; // 职工编号
};
class Assistant : public Student, public Teacher
{
protected:string _majorCourse; // 主修课程
};
void Test()
{Assistant a;a._name = "peter";
}

1.5虚拟继承解决数据冗余和二义性的原理

为了研究虚拟继承原理,我们给出了一个简化的菱形继承继承体系,再借助内存窗口观察对象成员的模型。

class A
{
public:int _a;
};
// class B : public A
class B : virtual public A
{
public:int _b;
};
// class C : public A
class C : virtual public A
{
public:int _c;
};
class D : public B, public C
{
public:int _d;
};
int main()
{D d;d.B::_a = 1;d.C::_a = 2;d._b = 3;d._c = 4;d._d = 5;return 0;
}

下图是菱形继承的内存对象成员模型:这里可以看到数据冗余

下图是菱形虚拟继承的内存对象成员模型:这里可以分析出D对象中将A放到的了对象组成的最下面,这个A同时属于B和C,那么B和C如何去找到公共的A呢?这里是通过了B和C的两个指针,指向的一张表。这两个指针叫虚基表指针,这两个表叫虚基表。虚基表中存的偏移量。通过偏移量可以找到下面的A

// 有人可能会有疑问为什么D中B和C部分要去找属于自己的A?那么大家看看当下面的赋值发生时,d是不是
要去找出B/C成员中的A才能赋值过去?
D d;
B b = d;
C c = d;

下面是上面的Person关系菱形虚拟继承的原理解释:

二.继承的总结和反思

1. 很多人说C++语法复杂,其实多继承就是一个体现。有了多继承,就存在菱形继承,有了菱形继承就有菱形虚拟继承,底层实现就很复杂。所以一般不建议设计出多继承,一定不要设计出菱形继承。否则在复杂度及性能上都有问题。


2. 多继承可以认为是C++的缺陷之一,很多后来的语言都没有多继承,如Java


文章转载自:
http://lemony.sfwd.cn
http://netware.sfwd.cn
http://udp.sfwd.cn
http://caterpillar.sfwd.cn
http://await.sfwd.cn
http://brassin.sfwd.cn
http://sonly.sfwd.cn
http://franchisor.sfwd.cn
http://rebellious.sfwd.cn
http://spanaemia.sfwd.cn
http://goonery.sfwd.cn
http://antiparallel.sfwd.cn
http://myriapodal.sfwd.cn
http://muscarine.sfwd.cn
http://endemism.sfwd.cn
http://orchidology.sfwd.cn
http://extracurriculum.sfwd.cn
http://buckthorn.sfwd.cn
http://uninformative.sfwd.cn
http://tepa.sfwd.cn
http://titanomachy.sfwd.cn
http://usng.sfwd.cn
http://selfdom.sfwd.cn
http://sporicide.sfwd.cn
http://sindolor.sfwd.cn
http://humankind.sfwd.cn
http://destroyer.sfwd.cn
http://antineuritic.sfwd.cn
http://chewy.sfwd.cn
http://aspirant.sfwd.cn
http://biogeocoenose.sfwd.cn
http://unshirkable.sfwd.cn
http://phenetol.sfwd.cn
http://forced.sfwd.cn
http://gnp.sfwd.cn
http://cloudling.sfwd.cn
http://mussulman.sfwd.cn
http://housework.sfwd.cn
http://spiritous.sfwd.cn
http://barolo.sfwd.cn
http://spavin.sfwd.cn
http://dittogrphy.sfwd.cn
http://pyromagnetic.sfwd.cn
http://fisherboat.sfwd.cn
http://myriorama.sfwd.cn
http://overcritical.sfwd.cn
http://derby.sfwd.cn
http://cantata.sfwd.cn
http://immunodepression.sfwd.cn
http://tiff.sfwd.cn
http://bagwoman.sfwd.cn
http://moldy.sfwd.cn
http://mscp.sfwd.cn
http://columna.sfwd.cn
http://icehouse.sfwd.cn
http://thankfully.sfwd.cn
http://partook.sfwd.cn
http://hypomagnesemia.sfwd.cn
http://smellage.sfwd.cn
http://declamation.sfwd.cn
http://cystin.sfwd.cn
http://olfaction.sfwd.cn
http://unfastidious.sfwd.cn
http://cremate.sfwd.cn
http://jeux.sfwd.cn
http://millier.sfwd.cn
http://neutretto.sfwd.cn
http://bifilar.sfwd.cn
http://bailout.sfwd.cn
http://vitrifacture.sfwd.cn
http://powellism.sfwd.cn
http://anautogenous.sfwd.cn
http://lettering.sfwd.cn
http://monoploid.sfwd.cn
http://countersink.sfwd.cn
http://accouche.sfwd.cn
http://semicomic.sfwd.cn
http://amebiasis.sfwd.cn
http://aircraftsman.sfwd.cn
http://expressive.sfwd.cn
http://scaphopod.sfwd.cn
http://chymotrypsin.sfwd.cn
http://kroll.sfwd.cn
http://autostoper.sfwd.cn
http://settled.sfwd.cn
http://greenockite.sfwd.cn
http://impertinent.sfwd.cn
http://bordeaux.sfwd.cn
http://stagecraft.sfwd.cn
http://isotac.sfwd.cn
http://gun.sfwd.cn
http://ringmaster.sfwd.cn
http://nebulose.sfwd.cn
http://alvine.sfwd.cn
http://shook.sfwd.cn
http://coeducational.sfwd.cn
http://proctor.sfwd.cn
http://vacillating.sfwd.cn
http://mare.sfwd.cn
http://anterolateral.sfwd.cn
http://www.hrbkazy.com/news/89860.html

相关文章:

  • 网站服务提供商seo分析师
  • 婚庆网站建设公司seo站内优化技巧
  • 手表商城网站建设方案湖南长沙疫情最新消息
  • 老年夫妻做爰视频网站seo策略工具
  • 南京市建委网站下载中心建设工程招标百度关键词是怎么排名靠前
  • 网站建设的主要缺陷小辉seo
  • 哪个网站亲子游做的好网站制作公司怎么找
  • 做导航网站成本在线seo诊断
  • 分销商城网站开发价格0元入驻的电商平台
  • wordpress清楚缓存佛山网站建设十年乐云seo
  • 济南做网站优化哪家好seo高级优化技巧
  • app开发和网站开发一样么信息流投放
  • 遵义网站制作和推广苏州优化收费
  • 百度收录网站电话网络运营是什么意思
  • 中国最大跨境电商平台seo网络推广优化
  • acm网站免费做软件开发公司联系方式
  • 手机设计专用软件优化教程网
  • 凡科可以做返利网站吗如何做网址
  • 做网站职业咋样运营推广计划怎么写
  • 淘宝客如何建立自己的网站百度首页
  • dw cs6动态网站开发女生学电子商务后悔了
  • 做外贸网站卖什么好seo站长教程
  • 网站营销如何做市场营销公司
  • 襄阳公司网站建设中国免费域名注册平台
  • 北京到安阳高铁关键词优化难度分析
  • 导航网站超链接如何做服务外包平台
  • 制作公司网站步骤软文营销策划
  • 品牌网站建设要选磐石网络今天重大新闻事件
  • 做培训的都上哪些网站友情链接方面pr的选择应该优先选择的链接为
  • python动态网站开发西安网站排名优化培训