《C++ 继承篇 imooc》笔记
来源:互联网 发布:阿里云搭ss 编辑:程序博客网 时间:2024/06/10 15:21
继承方式
公有继承 class A:public B保护继承 class A:protected B私有继承 class A:private B
- 实例化类A时,先实例化类B再实例化A,销毁时先销毁B再销毁A。
- private只能被本类访问,不能被子类访问。protected可以被子类访问。
public继承:
protected继承:
private继承:
隐藏
- 父子关系、成员同名、隐藏
Soldier s; //Solider类继承Person类,s.play(); //Person中成员函数play()被Soldier中同名成员函数play()隐藏,故输出Soldier类的成员函数play()s.Person::play() //可调用父类成员函数//Soldier中的数据成员m_iAge隐藏了Person类中数据成员m_iAgevoid work(){ cout << Person::m_iAge; //输出父类中数据成员 cout << m_iAge; //输出子类的数据成员}
void Person::play();void Soldier::play(int x);//父类、子类中有同名成员函数时,不能重载,只能隐藏。Soldier s;s.play() //调用的时Soldier的play(),且因为缺少参数而报错
#include <iostream> //<>:编译器去系统库中去查找iostream#include "Person.h" //"":编译器去当前目录下去寻找Person.h
Is-a
int main(){ Soldier s1; Person per1; per1 = s1; //子类可以赋值给父类 s1 = per1; //错误 Person* p1; p = &s1; //父类的指针可以指向子类 Solider* p2; p2 = &per1; //错误
- 父类指针(引用)可以指向(引用)子类对象,
- 子类的对象赋值给父类时,子类中从父类继承的数据成员被赋值,不是从父类继承的数据成员被截断。
- 父类指针指向子类时,该指针只能访问从父类继承的数据成员,无法访问子类特有的数据成员。
Person* p = new Soldier; //父类的指针指向子类的对象时,先执行父类的构造函数,再执行子类的构造函数delete p; //只执行了父类的析构函数p = NULL;
- 父类的指针指向堆中子类的对象,并且使用父类的指针释放这段内存,需要使用虚析构函数,
virtual~Person();
,虚析构函数可以被继承的,所以其子类Soldier的析构函数都将是虚析构函数。释放内存时,先执行子类析构函数再执行父类析构函数。
多继承与多重继承
多重继承
class A;class B:public Aclass C:public B
多继承
class A;class B;class C:public A, public B;
虚继承
菱形继承:A->B,A->C,(B,C)->D,此时D中含有两份A中的数据。D访问从A中继承过来的数据,会报错。
class B:virtual public A {} //关键字virtualclass C:virtual public A {}class D:public B,public C{} //B,C虚继承A,故D中只有一份A中数据
阅读全文
0 0
- 《C++ 继承篇 imooc》笔记
- 《C++ 封装篇(上) imooc》笔记
- 《C++ 封装篇(下) imooc》笔记
- 《C++ 模板类篇 imooc》笔记
- imooc Spring笔记
- imooc学习笔记--五子棋
- R语言iMooc笔记
- 《C++ imooc》笔记
- 《C++ 多态篇 imooc》笔记
- JavaScript学习笔记(imooc)
- (3)PHP 学习笔记进阶篇 from imooc
- JSP笔记From imooc(1)
- 软件测试基本概念-IMOOC笔记
- AnjularJS-imooc学习笔记1
- 笔记:imooc-vue 音乐app
- 【笔记-C++】 继承
- imooc-c++之启航篇
- 使用servlet实现验证码--IMooC笔记
- 如何修改Linux的主机名
- 爬虫笔记(10/6)--------CSVFeedSpider
- UVA
- Java提高篇(5)-对象比较器
- LiteIDE
- 《C++ 继承篇 imooc》笔记
- Linux可变参数
- Codeforces Round #438 题解
- Azkaban安装
- 51nod 1158 全是1的最大子矩阵
- 简单js实现城市级联
- ACCC-Club聚会地点计算程序
- 用JavaScript代码编写日历
- 财商低的六大表现!你中招了吗?