-
使用多态时,释放父类指针时,可能造成内存泄漏,可以使用虚析构函数 virtual ~Person() 虚析构函数不能用于:普通函数,静态函数,内联函数,构造函数。 建议在每个析构函数中都用虚析构函数,防止以后继承和使用多态造成内存泄漏查看全部
-
多态 Shape *p=new Circle; p->calcArea(); 如果父类方法不加virtual,则指针调用父类的方法 父类方法加virtual,指针调用子类的方法(子类virtual关键字系统会默认添加)查看全部
-
使用RTTI技术时,需要使用#include<typeinfo>查看全部
-
继承关系不是RTTI的充分条件,只是必要条件,所以存在继承关系的类不一定可以用RTTI技术。 RTTI技术可以通过父类指针识别其所指向对象的真实数据类型。 运行时类型识别必须建立在虚函数的基础上,否则无须RTTI技术。查看全部
-
dynamic cast转换时需要转换多态类型的,需要含有虚函数查看全部
-
typeid的注意事项: 1.type_id返回一个type_info对象的引用。 2.如果想通过基类的指针获得派生类的数据类型,基类必须带有虚函数。 3.只能获取对象的实际类型。即便类含有虚函数,只能判断当前对象是基类还是子类,不能判断指针查看全部
-
dynamic_cast注意事项:只能应用于指针和引用的转换,转换的类型必须是某个类型的指针或引用而不能是其本身 要转换的类型中必须包含虚函数。 转换成功返回子类的地址,失败则返回NULL查看全部
-
通过typeid(*obj).name()可以将obj实际指向的对象打印出来 或者 类型比对:typeid(*obj)==typeid(Bird),然后通过dynamic cast方式将obj转化为bird的指针,dynamic_cast<要转化的指针类型>(obj)查看全部
-
RTTI:运行时类型识别,Run-Time Type Identification typeid<->dynamic cast查看全部
-
接口类中仅有纯虚函数,不能含有其它函数, 可以使用接口类指针指向其子类对象,并调用子类对象中实现的接口类中纯虚函数。 一个类可以继承一个接口类,也可以继承多个接口类。 一个类可以继承接口类的同时也继承非接口类。 函数传参时,可以传入参数类型的子类和本身查看全部
-
接口类:仅含有纯虚函数的类,没有数据成员,仅有纯虚函数的成员函数 接口类更多地表达一种能力或协议查看全部
-
只有函数声明没有函数定义的虚函数是纯虚函数 含有纯虚函数的类不能实例化 抽象类的子类也可以是抽象类查看全部
-
当父类是抽象类,子类中没有重载父类中的函数,当继承自父类时,也是抽象类查看全部
-
含有纯虚函数的类叫抽象类,抽象类无法实例化对象查看全部
-
纯虚函数在虚函数表中的实现原理:虚函数表中,纯虚函数的值为0查看全部
举报
0/150
提交
取消