一:多态
(一)概念
不同的对象 对同样的消息 产生不同的行为。
消息在C++中指 函数的调用,而多态就是允许用一个函数名的调用来实现不同的功能。
(二)分类
二:虚函数
1.格式
2.条件
3.实例:
前置
注:此处,本来虚函数具有传递性,但一般还是会加
结果:
复习:!勿弄混:派生类可赋基类,基类指针可指向派生类
三:虚析构函数
1.引入
(1) 构造函数 构造时对象还没生成,谈不上绑定对象,不能被声明为虚函数
(2) 析构函数 能被声明为虚函数吗? 需要吗?
2.作用
此处,析构时希望释放pBace和pDevice两个空间,
但不使用析构virtual因为是指针只会调用基类析构——>要virtual析构
改后
结果
注意:当析构是虚的可不止调用子类,而是先子后父,给他释放干净
3.注意
(这样相当于就调用了子类的析构)
四:纯虚函数
1.格式 virtual void 函数名()=0;
2.作用:父类里虚函数不需要有东西,
等着匹配了子类对象再有东西(比如纯虚析构函数,只需调用子类析构父类可一起析构
但此时需在子类中重新定义该析构函数,原因如下)
3.抽象类:只要有了纯虚函数,不管有无别的成员,都是抽象类
子类同理(理解:父类抽象类,子类还不对虚函数格外定义,
那就视作子类只有同名的纯虚函数,即抽象类)
4.注意:抽象类不能创建对象(毕竟等着子类给它东西),
抽象类的其他函数还是可在子类调用(用::即可),当然纯虚函数肯定不能调用