-
RTTI运用:typeid(*obj).name() typeid(*obj)查看全部
-
RTTI:运行时类型识别查看全部
-
执行完子类的析构函数会自动执行父类的析构函数查看全部
-
virtual关键字的使用限制: 1.不能修饰普通函数,局限于成员函数 2.不能修饰静态成员函数,因为静态函数跟类同生共死 3.不能修饰内联函数,使用的话会忽视内敛inline 4.不能修饰构造函数查看全部
-
virtual->析构函数,虚析构函数来解决,动态多态的内存泄露问题查看全部
-
虚析构函数 virtual ~Shape(){} virtual ~Circle(){}//子类可以不写virtual 此时, Shape *shape1=new Circle(1.0) 先执行父类Shape构造函数,再执行子类Circle构造函数 delete shape1;先执行子类Circle析构函数,再执行父类Shape析构函数查看全部
-
void doSomething(Movable *obj) { obj->move(); if(typeid(*obj)==typeid(Bus)) { Bus *bus=dynamic_cast<Bus*>(obj); bus->carry(); } if(typeid(*obj)==typeid(Tank)) { Tank *tank=dynamic_cast<Tank*>(obj); tank->fire(); } } 判断*obj是否是Bus类型,如果是则将obj指针转化成Bus的指针并赋值给新的指针*bus查看全部
-
RTTI的含义是运行时类型识别; RTTI技术可以通过父类指针识别其所指向对象的真实数据类型; 运行时类型别必须建立在虚函数的基础上,否则无需RTTI技术查看全部
-
不能修饰内联函数查看全部
-
虚析构函数,virtual不能修饰普通函数(全局函数),必须是成员函数;不能修饰静态成员函数;不能修饰构造函数;查看全部
-
一个内存单元查看全部
-
函数参数(形参)是指针时,调用函数实参是地址,例如定义void flymatch(flyable *f1,flyable *f2){},调用时flymatch(&p1,&p2)查看全部
-
仅含有纯虚函数的类叫接口类查看全部
-
类里有数据成员,实例化对象时后面要跟上初始化数据。如// 通过动物类实例化狗类 Animal *p=new Dog("狗类");Dog类里有数据成员m_strname查看全部
-
只有函数声明没有函数定义的虚函数是纯虚函数; 含有纯虚函数的类叫做抽象类; 不可以使用含有纯虚函数的类实例化对象; 可以使用含有纯虚函数的类实例化对象。查看全部
举报
0/150
提交
取消