汾曲名家相国孙,翊登枢铉继承恩。继承
一、什么是继承?
继承机制是面向对象程序设计使代码可以复用的重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。
二、继承定义
代码如下
class Person
{public ;void Print(){cout << "name:" << _name << endl;cout << "age:" << _age << endl;}
protected:string _name = "peter"; //姓名int _age = 18; //年龄
};
// 继承后父类的Person的成员函数和成员变量都会变成子类的一部分。派生类 继承方式 基类
class Student : public Person
{protected:int _stuid; //学号
};
int main()
{Student s;s.Print();return 0;
}
Student 类并未实现Print() 函数而是继承Person类的。
三、访问方式
通过学习我们知道一个类可以有public、protected、private成员,相应的继承方式有pubilc、protected、private继承。相应的派生类对应的访问方式。
四、基类和派生类对象复制转换
1、派生类对象可以赋值给基类的对象 / 基类的指针 / 基类的引用。
2、基类对象不能赋值给派生类对象。
3、基类指针可以通过强制类型转换赋值给派生类的指针。(基类的指针是指向派生类对象时才是安全的)
class Person
{protected:string _name; //姓名string _hobby; // 性别int _age; //年龄};class Student : public Person
{public:int _grade; //年级
};void Test()
{Student s;//1.子类对象可以赋值给父类对象/指针/引用Person pe = s;Person* p = &s;Person& rp = s;//2.基类对象不能赋值给派生类对象s = pe;//3.基类的指针可以通过强制类型转换赋值给派生类的指针p = &s;Student* ps1 = (Student*) p;ps1->_grade = 1;p = &b;Student* ps2 = (Student*)p;//会存在越界访问的问题ps2->_grade = 1;
}
五、继承中的作用域
1、在继承体系中基类和派生类都有独立的作用域。
2、子类和父类中有同名成员,子类成员将屏蔽父类对同名成员的直接访问,这种情况叫隐藏,也叫重定义。
3、需要注意的是如果是成员函数的隐藏,只需要函数名相同就构成隐藏。
4、注意在实际中在继承体系里面最好不要定义同名的成员。
class Person
{protected:string _name = "famur";int _num = 111;};class Student : public Person
{public:void Print(){cout << "姓名:" << _name << endl;cout << "学号:" << _num << endl;cout << "身份证号:" << Person::_num << endl;}
protected:int _num = 222;
};int main()
{Student s;s.Print();system("pause");return 0;
}
运行结果:
这里Person中的 _num 被 Student 中的 _num 隐藏。如果想访问Person中的_num需要指明作用域。
六、派生类的默认成员函数
1.派生类的构造函数必须调用基类的构造函数初始化基类的那一部分成员。如果基类没有默认的构造函
数,则必须在派生类构造函数的初始化列表阶段显示调用。
2. 派生类的拷贝构造函数必须调用基类的拷贝构造完成基类的拷贝初始化。
3. 派生类的operator=必须要调用基类的operator=完成基类的复制。
4. 派生类的析构函数会在被调用完成后自动调用基类的析构函数清理基类成员。因为这样才能保证派生类
对象先清理派生类成员再清理基类成员的顺序。
5. 派生类对象初始化先调用基类构造再调派生类构造。
6. 派生类对象析构清理先调用派生类析构再调基类的析构。
七、继承注意点
1、友元关系不能继承,也就是说基类友元不能访问子类私有和保护成员。
2、基类定义了static静态成员,则整个继承体系里面只有一个这样的成员。无论派生出多少个子类,都只有一个static成员示例。
汾曲名家相国孙,翊登枢铉继承恩。继承相关推荐
- 名帖300 王铎 行书《行书帖选》
<中国书法名帖目录> 目录 一.<米芾书杜少陵题王宰山水图歌>跋 二.<坐餐勝亭之作> 三.<长椿寺旧作五律诗轴> 四.<赞谢安书轴> 五. ...
- 中医,较为严谨的定义
http://www.douban.com/group/topic/12620142/ 中医,较为严谨的定义应是..... 一位对中西医均有涉足者,对中西医对比之一二 龙卫权2001-7-19(200 ...
- 中科大科学岛计算机博士,2017年科学岛分院博士研究生招生拟录取名单公示
考生编号 姓名 录取专业名称 103587116800027 向皓明 等离子体物理 103587116800028 杨秀达 等离子体物理 103587116800029 钱玉忠 等离子体物理 1035 ...
- 老师教我们用计算机画画就是彩虹,一年级上课文
小学语文一年级上册 课文及儿歌 汉语拼音4 轻轻的 小兔小兔轻轻跳, 小狗小狗慢慢跑, 要是踩疼了小草, 我就不跟你们好. 汉语拼音5 猜一猜 两棵小树十个杈, 不长叶子不开花. 能写会算还会画, 天 ...
- 老师教我们用计算机画画就是彩虹,上海一年级语文课文
上海一年级语文课文 一年级是一个承上启下的.重要学年.下面是小编带来的一年级语文课文内容.希望可以帮助到大家! 汉语拼音4 轻轻的 小兔小兔轻轻跳, 小狗小狗慢慢跑, 要是踩疼了小草, 我就不跟你们好 ...
- 奇舞学院学习笔记之CSS一页通
CSS概念与简单选择器 版本 CSS Level 1 CSS Level 2(CSS2.1规范) CSS Level 3 Color Module Level 3 Selectors Level 3 ...
- PHP 开发与代码审计(总结)
笔者将学习PHP时的学习笔记分享出来,基本上是前面的那些博文的汇总,看起来更方便一些,笔者最近放弃了PHP代码审计部分,所以不再继续学下去了,由于精力实在达不到,只能选择一样进行发展,不想成为半瓶子醋 ...
- 云游武夷,智慧文旅促进旅游业发展
爱古典文学的人一定知晓这里,从古至今,有关它的诗词众多.陆游曾作诗曰:"少读封禅书,始知武夷君:晚乃游斯山,秀杰非昔闻":爱茶之人也必然知道这里,大红袍.金骏眉均产自这里,被赞为茶 ...
- 歌詞:世界が终わるまでは-WANDS
世界が终わるまでは 作词:上杉升 作曲.织田哲郎 编曲:叶山たけし 歌手:WANDS 主唱:上杉升 大都会に 仆はもう一人で 投げ舍てられた 空カンのようだ 互いのすべてを 知りつくすまでが 爱ならば ...
最新文章
- 扩展 日历_2021少林日历 | 以最美的方式记录时光
- ios 获取一个枚举的所有值_Java enum枚举在实际项目中的常用方法
- 雌性激素过高怎么办?
- reverse() 几种操作
- 金蝶云星空操作手册_金蝶国际CFO林波谈云业务:金蝶云·星空预计今年可以实现盈利...
- Silverlight 2 DispatcherTimer和通过XAML创建UI元素
- What happens when clicking interaction recor工作中心
- SpringBoot2 集成 xxl-job任务调度中心_参数传递
- oracle增删控制文件,控制文件的增删改及备份
- php 中文key_API常用签名验证方法(PHP实现)
- python中split的用法-python中的split()函数的用法
- spring中的class配置不能使用properties中的字符串
- HDU1262 寻找素数对【素数】
- Struts2学习笔记(十) OGNL
- 微信小程序 java高校科研管理系统
- and or not 优先级_EXCEL函数与公式剖析:AND
- 在2022年如何将整个维基百科下载到U盘中
- [阿毛]Ubuntu 16安装CH340串口驱动
- 深度学习中的感受野计算
- 鸡得传染性鼻炎怎么治疗 鸡打喷嚏脸肿喂什么药