本章目录:
1. 类型转换
1.1 概述
1.2 动态转换
之前我们已经接触过静态转换了,我们接下来看一下动态转换。
1.2.1 子类句柄赋值于父类句柄
答案:A,调用的是父类的方法
解析:因为tr的类型是父类,所以就算是子类句柄赋值与它,那它能够访问的范围也只有父类本身。
1.2.2 父类句柄赋值于子类句柄
答案:B,调用的是子类的方法
解析:通过cast之后父类句柄指向子类句柄之后,可以访问子类的方法。
练习
答案:ABC
解析:D错误,动态转换失败会返回0,所以是有提示的。
2. 虚方法
2.1 概述
2.2 非虚函数的调用
从上图可以发现,父类中test方法为 非虚方法,所以子类句柄赋值与父类句柄,之后先调用子类的test方法,打印结果是子类的test方法;随后调用父类句柄的test方法,结果只打印父类test方法。
2.3 虚函数的调用
2.4 新手建议
2.5 练习
答案:A
解析:B错误,混淆概念,虚方法讲的是多态,而super讲的是继承,不一样的;C错误,虚方法顾名思义只对方法起作用,如果父类句柄指向子类句柄,可以动态绑定成员方法,而不可以绑定成员变量;D错误,继承必须是同名同参同类型,这也是继承的要求,和多态不能混淆。
3. 对象拷贝
3.1 区别 ”两种方式“
3.1.1 指向同一个对象
3.1.2 浅拷贝
答案:$cast(h, t);
3.2 概述
3.3 小结
4. 回调函数
4.1 概述
4.2 使用流程
4.2.1 预留回调函数的入口
4.2.2 定义回调的类以及类中的各个函数
4.2.3 例化并且添加回调类的实例
练习
答案:ABCD
5. 参数化的类
5.1 概述
5.2 举例说明
实现一个简化的mailbox
练习
答案:ABD
解析:C错误,不可以随意转换。
声明
本人所有系列的文章,仅供学习,不可商用,如有侵权,请告知,立删!!!
本人主要是记录学习过程,以供自己回头复习,再就是提供给后人参考,不喜勿喷!!!
如果觉得对你有用的话,记得收藏+评论!!!