-
RTTI:运行时类型识别 typeid(*obj).name()打印出obj这个指针指向的实际的对象类型 对类型进行比对:if{typeid(*obj)==typeid(Bird)} dynamic_cast< >转换类型,< >中是要转化成为的类型,例如:Bird *bird = dynamic_cast<Bird *>(obj);(obj)转化为Bird * 类型 dynamic_cast用法的注意事项:只能应用于指针和引用之间的转换,即< >中只能是某一类型的指针或者是某一类型的引用;要转换的类型中,必须包含虚函数;转换成功返回子类的地址,失败返回NULL typied的注意事项:type_id 返回一个type_info对象的引用;如果想通过基类的指针获得派生类的数据类型,基类必须带有虚函数;只能获取对象的实际类型;更多关于dynamic_cast知识详见https://blog.csdn.net/pngynghay/article/details/42679791
查看全部 -
1、接口类:仅含有纯虚函数的类,类中无数据成员,只有成员函数,且都为纯虚函数;
2、接口类更多地表达一种能力或者协议;
如:void flyMatch(Flyable *a,Flyable *b)//飞行比赛
//要求传入一个会飞对象的指针,此时鸟类(公有继承能飞类)的对象指针可以传入进来
{
....
a->takeoff();
b->takeoff();
a->land();
b->land();查看全部 -
1、抽象类无法实例化对象;
2、抽象类的子类也可以是抽象类;
查看全部 -
虚函数使用限制:1、普通函数不能是虚函数,必须是成员函数;
2、 静态成员函数不能是虚函数(static)
3、内联函数不能是虚函数(inline)
4、构造函数不能为虚函数
查看全部
举报