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

广州网站导航东莞网站建设网页推广

广州网站导航,东莞网站建设网页推广,网站关键词筛选,wordpress usermeta文章目录 十二、继承5. 继承与友元6. 继承与静态成员7. 复杂的菱形继承及菱形虚拟继承 未完待续 十二、继承 5. 继承与友元 友元关系不能继承#xff0c;也就是说父类友元不能访问子类私有和保护成员 。除非子类也设置成友元。 6. 继承与静态成员 父类定义了 static 静态成… 文章目录 十二、继承5. 继承与友元6. 继承与静态成员7. 复杂的菱形继承及菱形虚拟继承 未完待续 十二、继承 5. 继承与友元 友元关系不能继承也就是说父类友元不能访问子类私有和保护成员 。除非子类也设置成友元。 6. 继承与静态成员 父类定义了 static 静态成员则整个继承体系里面只有一个这样的成员。无论派生出多少个子类都只有一个 static 成员实例 。这个方法可以统计整个体系一共产生了多少个对象。 #includeiostream using namespace std;class Person { public:Person(){_count;} protected:string _name; // 姓名 public:static int _count; // 统计人的个数。 };// 静态变量 int Person::_count 0;class Student : public Person { protected:int _stuNum; // 学号 };class Graduate : public Student { protected:string _seminarCourse; // 研究科目 };void TestPerson() {Student s1;Student s2;Student s3;Graduate s4;cout 人数 : Person::_count endl;// _count 就一份Student::_count 0;cout 人数 : Person::_count endl; }int main() {TestPerson();return 0; }7. 复杂的菱形继承及菱形虚拟继承 继承关系分为单继承、多继承。 单继承就是一个子类只有一个直接父类时称这个继承关系为单继承。 多继承就是一个子类有两个或以上直接父类时称这个继承关系为多继承。 // 多继承语法 class Assistant :public Student, public Teacher {// };菱形继承是多继承的一种特殊情况。如下图 但是菱形继承会产生一种问题 解决方法之一就是 指定访问成员 这样仅仅能解决二义性的问题但是数据冗余的问题并没得到解决。 #includeiostream using namespace std;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; }int main() {Test();return 0; }另一种解决方法就是 虚继承 。虚继承可以解决菱形继承的二义性和数据冗余的问题。 虚拟继承的语法就是 在继承方式前面加上 virtual 关键字。 #includeiostream using namespace std;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; }int main() {Test();return 0; }但是虚继承的 virtual 写在哪个地方呢 虚继承到底是怎样解决数据冗余和二义性的问题的呢我们来简化一个模型看看他在底层是什么样的。我们先看看普通继承 #includeiostream using namespace std;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; }这是一个非常典型的菱形继承B 和 C继承 AD 又继承 B 和 C 。 由上图可知普通继承具有数据冗余性。接下来看看虚继承 #includeiostream using namespace std;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 。 未完待续
http://www.pierceye.com/news/494111/

相关文章:

  • 合肥网站建设ahyedawordpress主题安全
  • 网站建设实训室介绍东莞seo广告宣传
  • 公职人员可以做公益网站吗aws网站建设
  • 什么叫高端网站定制广州建筑公司
  • 全新网站如何做百度竞价网站制作现状解决方案
  • 阿里云esc建设网站近三天时政热点
  • 怎样做公司网站介绍仿站网站源码下载
  • 电子商务网站规划与建设摘要软件app定制开发
  • 天水做网站的公司kj6699的seo综合查询
  • 找工程项目信息网站早那么做商城网站
  • 做网站优化销售管理系统排名
  • wordpress导入网站模板wordpress部分图片
  • 无锡做网站365caiyi秘密直播
  • 无锡企业网站制作报价公司做网站需要哪些手续
  • 最好的营销型网站保险购买平台有哪些
  • 网站建设实训的目的网站开发的框架协议
  • 本地郑州网站建设搭建一个网站
  • 如何做网站竞品分析哪个网站可以接任务做兼职
  • 佛山网站关键词网站建设需求分析文档
  • 网站收录地址旅游网站建设的相关报价
  • seo月薪seo优化方法网站快速排名推广渠道
  • 企业网站设计理念如何seo网站
  • 河南移动商城网站建设怎么创建平台卖自己的产品
  • 网上做网站钱被骗了报案有用吗文章自定义wordpress
  • 网站设置成灰色市场监督管理局是什么单位
  • 北京国贸网站建设wordpress需要付费才能看某些页面
  • 郸城网站建设wordpress教程cms
  • 做本地网站赚钱吗?php网站制作过程中遇到的问题及解决办法
  • 上海网站快速排名提升ui是网站建设吗
  • 中信建设有限责任公司洪波seo外链工具