-
多态中存在的问题:内存泄露 例如图中,多定义了一个指针,在多态中通过父类指针指向子类对象,并且通过父类指针去操作子类对象中的虚函数时,当使用delete去销毁对象,并想借助父类的指针销毁子类对象会出现问题(只会执行父类的析构函数),执行不到Circle的析构函数 Shape *shape = new Circle(3,5,4.0); shape->calcArea(); delete shape1; //只会执行父类的析构函数,执行不到Circle的析构函数 shape1 = NULL 必须引入虚析构函数,同样的使用virtual修饰父类的析构函数(子类的析构函数可写可不写virtual关键字,系统会自动填上,推荐写上)查看全部
-
动态多态(晚绑定):必须以封装和继承为基础 例如:父类Shape,子类Circle和Rect都有calcArea()成员函数,若想如左图那样让shape1和shape2对象进行面积计算,则必须将父类的calcArea()成员函数加上virtual关键字使其成为虚函数,系统会自动为子类的calcArea()成员函数加上virtual关键字(推荐在子类定义中也加上virtual关键字)查看全部
-
静态多态(早绑定):程序在编译阶段,就已经确定下来要使用哪个函数查看全部
-
面向对象三大特征查看全部
-
我被异常处理了 难道所有代码最好都弄成这样233 比如分配内存弄到NULL时一个if就OK了么查看全部
-
实现动态多态(早绑定)查看全部
-
233没听懂 强制类型转换和课里面讲的那个有什么区别额查看全部
-
if(typeid(*指针对象)==typeid(转换对象)) { ....*转换对象=dynamic_cast<刚刚的转换对象*>(刚刚的指针对象); 转换对象->对象();//打印 }查看全部
-
RTTI实例查看全部
-
类中仅有纯虚函数的类,无数据成员和其他函数查看全部
-
抽象类无法实现实例化查看全部
-
含有纯虚函数的类叫做抽象类查看全部
-
纯虚函数=0查看全部
-
233好吧 我也是醉了查看全部
-
江河湖海恍恍惚惚恍恍惚惚恍恍惚惚江河湖海刚刚 vvv 哥哥哥哥查看全部
举报
0/150
提交
取消