C++远征之多态篇

1、虚函数
多态:不同对象收到同个消息或相同对象收到不同消息
静态多态/动态多态 早绑定/晚绑定

封装->继承->多态

使用多态可能会出现内存泄漏的问题
若子类中使用申请内存,析构去申请内存。使用多态时,只销毁了父类的析构,会造成子类的内存泄漏(在之前有讲过)
解决方法:在父类析构函数添加virtual

**多态的限制条件
1、不能在普通函数中
2、不能在静态成员函数中
3、不能与内联函数一起,inline会被忽略
4、构造函数不能加(与private加上构造的概念弄乱了)**

创建对象不会为成员函数分配空间。成员函数放在代码区,多个对象共享。

若一个类中没有成员变量,则它实例化的对象的占的内存长度为1(相当于标定下自己存在),若有成员变量时,就不存在了

2、纯虚函数
virtual void move()=0;

抽象类:含有纯虚函数的类叫做抽象类
抽象类中不能去实例化对象

接口类:仅含有纯虚函数的类称为接口类(没有成员变量,成员函数都是纯虚函数)
接口类更多的表达一种能力或协议

3、RTTI(这个好难懂)
Run-Time Type Identification——运行时类型识别

typeid <——>dynamic_cast

dynamic_cast注意点:
1、只能用于指针或引用的转换
2、转换的类型中必须包含虚函数
3、转换成功返回子类地址,失败(不安全转换)返回NULL

typeid注意点:
1、typeid返回的是一个typeinfo对象的引用
2、如果想通过基类的指针获得派生类的数据类型,基类必须带有虚函数
3、只能获取对象的实际类型(重点,没听懂)

4、异常处理:程序运行期出现的错误

异常处理是怎么做?
对有可能出现异常的地方做出预见性的安排

关键字:try…catch(尝试 捕获) throw(抛出异常)

try放主逻辑 catch放异常逻辑

异常处理

若抛出异常,则在try中后面语句执行不了。
常见的异常情况:
1、数组下标越界
2、除数为0
3、内存不足

内存异常
内存的异常,抛出然后调用虚函数

c++学习先告一段落

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值