-
class
查看全部 -
RTTI图示
查看全部 -
typeid注意事项:
type_id返回一个type_info对象的引用;
如果想通过基类的指针获得派生类的数据类型,基类必须带有虚函数;
只能获取对象的实际类型
查看全部 -
使用dynamic_cast注意事项:
只能应用于指针和引用的转换;
要转换的类型中必须包括虚函数;
转换成功返回子类的地址,失败返回NULL
查看全部 -
RTTI:运行时类型识别
if(typeid(*obj).name() == typeid(Bird))
Bird *bird = dynamic_cast<Bird *>(obj)
dynamic_cast注意事项:
只能应用于指针和引用的转换,不能是对象;
要转换和被转换的类型中必须包含虚函数;
转换成功返回子类地址,失败返回NULL;
type_id注意事项:
返回一个type_info对象的引用;
如果想通过基类的指针获得派生类的数据类型,基类必须带有虚函数;
只能获取对象的实际类型(不能传入对象指针获取指向对象的实际类型);
查看全部 -
仅含有纯虚函数的类叫接口类,没有数据成员。
查看全部 -
纯虚函数:virtual int func() = 0;不需要去实现函数的时候用。
含有纯虚函数的类叫抽象类。哪怕只含有一个纯虚函数也叫抽象类。
不允许实例化抽象类对象。
抽象类的子类也可以是抽象类。
抽象类的子类只有把抽象类当中的所有纯虚函数都做了实现,这个子类才可以实例化对象。
查看全部 -
虚继承:菱形继承,构造D对象时,不希望实例化2个A。
虚函数:多态,父类指针下命令,希望子类执行不同的动作。如果父类实现了虚构函数,子类可以实现也可以不实现该虚构函数。
虚析构函数:防止内存泄漏,父类指针指向子类对象,delete父类指针,希望能同时执行父类和子类的析构函数。
查看全部 -
delete 父类指针:只调用父类的析构函数,除非用virtual(虚析构函数)
delete 子类指针:既调用父类析构函数,又调用子类析构函数
virtual不能修饰普通函数(不在类里面的函数)、静态成员函数、内联函数(inline会失效)、构造函数。
查看全部 -
typeid(RTTI)的注意事项
查看全部 -
dynamic_cast(RTTI)的注意事项
查看全部 -
纯虚函数就是用来表示目的不明确的函数
查看全部 -
纯虚函数的构造样式
查看全部 -
delete 后加父类指针只能执行父类的析构函数,后加子类指针,既能执行父类析构函数,又能执行子类析构函数
查看全部 -
catch(类型 &e)
可将抛出值打印出来
查看全部
举报