-
typeid用来判断类型
返回一个type_info对象的引用
如果想通过基类的指针获得派生类的数据类型,基类必须带有虚函数
只能获取对象的实际类型
dynamic_cast转化类型:
只能应用于指针和引用的转换
要转换的类型中必须包含虚函数
转换成功返回子类的地址,失败返回NULL
查看全部 -
接口类(成员函数全为纯虚函数的类)无cpp文件
查看全部 -
接口类例子
查看全部 -
仅含有纯虚函数的类为接口类
查看全部 -
抽象类
查看全部 -
纯虚函数
查看全部 -
virtual的限制4
查看全部 -
virtual的限制3
查看全部 -
virtual的限制2
查看全部 -
virtual的限制1
查看全部 -
虚函数(子类定义时最好也加上virtual关键字)
查看全部 -
多态:指相同对象受到不同消息或不同对象收到相同消息时产生不同的动作。
静态多态(早绑定):在运行前,编译阶段就已确定要调用哪个函数,很早就把函数编译进去。
动态多态(晚绑定):不同对象,下达相同指令,产生不同动作。前提:以封装与继承为基础。至少要两个类,父类与子类,用三个类时,动态多态表现地会更明显。
实现多态的成员函数:用virtual修饰函数,使之成为虚函数查看全部 -
typeid,typeid.name
dynamic_cast
查看全部 -
将obj这个指向转换为Plane的指针或者是Bird的指针
typeid(*obj).name() 打印的是某个类型
typeid能打印的指针,是指针本身的类型
dynamic_cast转换必须是指针或者是引用,而且要转换的类型中必须含有虚函数查看全部 -
接口类Flyable,没有cpp文件,因为根本不需要去实现。 并且没有构造函数和析构函数,只有2个纯虚函数。
构造函数是用来实例化(或者叫构造对象)用的, 而接口是不允许进行实例化的, 因此没有构造函数接口类只含有纯虚函数。
接口类不能被实例化,但可以有指向接口类的指针,以便于操纵各个子类。
查看全部 -
纯虚函数 = 抽象函数
含有纯虚函数的类 = 抽象类
查看全部 -
1、普通函数(全局函数)不能是虚函数
2、静态成员函数不能是虚函数
3、内联函数不能是虚函数
4、构造函数不能是虚函数
查看全部 -
静态多态:通过传入参数的不同调用不同的函数(函数重载)
动态多态:通过父类指针指向不同子类对象,令不同的子类对象调用各自子类重写的函数。
为什么需要虚函数/抽象函数?
因为动态多态,是通过父类指针指向不同子类对象实现的。而用指针调用同名函数时,默认调用的是父类的函数。
所以需要将父类函数写成虚函数,让PC知道需要调用的是所指向子类的函数。
查看全部 -
不同的对象,接收同一参数。
执行情况和输出结果不同,就称为“多态”
查看全部 -
1、异常处理关键字try...catch...和throw就是将主逻辑放在try块里,异常处理逻辑放在catch里面。 基本思想:主逻辑与异常处理分离。好处看上去整齐,非常容易理解。
2、try与catch可以是一对多的关系,第三种方式catch(...)是指throw抛出异常后,catch都能捕获到异常的写法;
3、异常处理与多态的关系:例子中catch中为父类引用对象,可以捕获两种抛出异常,并通过子类对象调用相应函数;
查看全部
举报