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

网站集群建设参数wordpress 下载选择

网站集群建设参数,wordpress 下载选择,免费建站,怎么联系地推公司目录 一,继承与友元二,继承与静态成员三,复杂的菱形继承及菱形虚拟继承四,继承的总结和反思 点击跳转上一篇文章: 【C】:继承(定义&&赋值兼容转换&&作用域&&派生类的默认成员函数…

目录

  • 一,继承与友元
  • 二,继承与静态成员
  • 三,复杂的菱形继承及菱形虚拟继承
  • 四,继承的总结和反思

点击跳转上一篇文章: 【C++】:继承(定义&&赋值兼容转换&&作用域&&派生类的默认成员函数)

一,继承与友元

友元关系不能继承,也就是说基类友元不能访问子类私有和保护成员 。

二,继承与静态成员

基类定义了static静态成员,则整个继承体系里面只有一个这样的成员。无论派生出多少个子类,都只有一个static成员实例 。

class Person
{
public:Person() { ++_count; }
protected:string _name; // 姓名
public:static int _count; // 统计人的个数。
};int Person::_count = 0;class Student : public Person
{
protected:int _stuNum; // 学号
};int main()
{Person p;Student s;cout << &Person::_count << endl;cout << &Student::_count << endl;return 0;
}

在上述代码中,此时Student和Person里面的_count是同一个,静态变量_count存在静态区,不是单独的存在各个对象里,是属于整个继承体系了

三,复杂的菱形继承及菱形虚拟继承

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

在这里插入图片描述

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

在这里插入图片描述
3.菱形继承:菱形继承是多继承的一种特殊情况。

在这里插入图片描述

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

class Person
{
public:string _name; // 姓名int _id;int _tel;string _adress;
};class Student : public Person
{
protected:int _num; //学号
};class Teacher : public Person
{
protected:int _id; // 职工编号
};class Assistant : public Student, public Teacher
{
protected:string _majorCourse; // 主修课程
};int main()
{//数据冗余和二义性Assistant a;//a._name = "小李";//a._name = "李老师";//1.指定类域a.Student::_name = "小李";a.Teacher::_name = "李老师";
}

由监视窗口得出数据的冗余:
在Assistant的对象中Person成员会有两份

在这里插入图片描述

并且在访问成员变量时指定不明确,有二义性

在这里插入图片描述

4.解决方法

4.1 访问成员变量有二义性时,可指定类域

int main()
{//继承代码续接上……//1.指定类域a.Student::_name = "小李";a.Teacher::_name = "李老师";
}

在这里插入图片描述

4.2 虚拟继承可以解决菱形继承的二义性和数据冗余的问题

虚拟继承:在继承会造成冗余的类的那里加上关键字 virtual

class Person
{
public:string _name; // 姓名int _id;int _tel;string _adress;
};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; // 主修课程
};int main()
{Assistant a;a.Student::_name = "小李";a._name = "小李";a._name = "李老师";return 0;
}

四,继承的总结和反思

1.很多人说C++语法复杂,其实多继承就是一个体现。有了多继承,就存在菱形继承,有了菱形继承就有菱形虚拟继承,底层实现就很复杂。

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

3.继承和组合

(1) public继承是一种is-a的关系。也就是说每个派生类对象都是一个基类对象。

(2) 组合是一种has-a的关系。假设B组合了A,每个B对象中都有一个A对象。

(3) 优先使用对象组合,而不是类继承

(4) 继承可以直接访问基类的protected 和 public成员。在继承方式中,基类的,内部细节对子类可见 。继承一定程度破坏了基类的封装,类的改变,对派生类有很大的影响。派生类和基类间的依赖关系很强,耦合度高

(5) 组合只能访问public成员组合类之间没有很强的依赖关系,耦合度低。优先使用对象组合有助于你保持每个类被封装。

http://www.yayakq.cn/news/86682/

相关文章:

  • 中医网站建设素材装饰公司网页设计
  • 建html5响应式网站的工具做外汇的人一般看什么网站
  • 网站建设认证试题云典 wordpress
  • 电子商务网站解决方案手机商城小程序
  • 猎头公司网站素材西安模板网站建设套餐
  • wordpress站点推荐今天出入上海最新通知
  • 同性性做视频网站某大学网络设计方案
  • 做网站可以做哪些方面的opensns wordpress
  • 做企业网站的尺寸是多少钱wordpress 手机 重定向 子目录
  • 延庆网站建设优化seo网站建设维护网页设计
  • 我的世界怎么做的好看视频网站公司加盟
  • 松江附近做网站重庆市中心城区
  • 建设初级中学网站湛江网站建设价格
  • 一个空间2个网站代码无忧传媒在短视频领域的成就
  • 永倍达电商平台拼多多seo是什么意思
  • sql2008做网站wordpress图标字体不显示不出来
  • 套用别人产品图片做网站wordpress 迁移 步骤
  • 建网站最少需要多少钱淘宝客程序wordpress
  • 网站建设与维护考试题非盈利性备案网站 淘宝客网站
  • 桐城市美好乡村建设办公室网站腾讯外贸电商平台
  • 什么网站可以做单词书哔哩哔哩网页版怎么回到旧版
  • 韩国封号事件网站建设百度竞价代运营托管
  • 信息网站建设网站关键词可以做几个
  • 中国旅游网站建设现状及发展趋势分析新农村建设投诉网站
  • 阿里巴巴国际网站建设企业微信手机片网站制作
  • 软环境建设网站中国室内设计师
  • 手机app 网站建设中国建设银行网站密码是什么
  • 苏州网站建设情况深圳网站建设服务哪家专业
  • 网站建设全包公司推荐网站首页 psd
  • 网站品牌形象设计怎么做珠峰网站建设