1. 在派生类中重新定义基类的方法
当需要在派生类中重新定义基类的方法时,应在基类方法前使用关键字virtual,而派生类重新定义的方法自动被继承为虚方法,不过可以加上virtual前缀进行限定,以便区分派生类的哪些方法是虚方法。
关键字: 基类; 派生类; 虚方法; 方法重写
注意:使用不使用关键字virtual
如果使用了virtual关键字,程序将根据引用或指针指向的 对 象 类 型 来选择方法,否则使用引用类型或指针类型来选择方法。
2. 为多态基类声明virtual析构函数
为什么要把基类的析构函数设置为虚?
为多态基类声明virtual析构函数。当class不被企图被当作base class时,令其析构函数为virtual往往是个馊主意。当多重继承时,把基类的析构函数设置为虚函数是一个好习惯,尽管有时候基类析构函数不做任何事情。使用虚析构函数可以保证正确的析构函数被调用;在构造派生类对象时,首先调用基类构造函数,再调用派生类的构造函数;析构对象时恰恰相反。
关键字: 构造对象;析构对象;构造次序;析构次序
3. 抽象基类
把虚方法设置为0,虚方法就是纯虚函数。如:virtual funName() = 0;// 纯虚函数。包含纯虚函数的类只能作为基类,纯虚基类是抽象基类,抽象基类不能创建对象。
如果基类中至少含有一个纯虚函数,那么该基类为抽象基类(Abstract Base Class),抽象基类不能创建对象,抽象基类用于为它的派生类提供接口,派生类必须为其实现纯虚函数。一般抽象基类的纯虚函数(写给编译器看的)不对其定义,但是C++甚至允许抽象基类中的纯虚函数有定义。