基类指针或引用只能用于调用基类中包含的同名方法,不能使用基类指针或引用指向派生类方法。
关于基类和派生类中的vitural方法:
如果没有使用关键字virtual,程序将根据引用类型或指针类型(基类)选择方法,如果使用了virtual关键字,程序将根据引用或指针对象指向的类型来选择方法(基类和派生类分别有一个同名函数的不同实现),指向的对象本身类型是基类,则调用基类的同名虚函数,指向对象本身类型为派生类,则调用派生类同名函数。经常在基类中将派生类会重新定义的方法声明为虚方法。方法在基类中被声明为虚的后,它在派生类中将自动成为为虚方法,然而,在派生类声明中使用关键字virtual来支出哪些函数是虚函数也不失为一个好方法。
基类声明了一个虚析构函数。这样做是为了确保释放派生对象时,按正确的顺序调用析构函数,为基类声明一个虚析构函数也是一种习惯。