虚函数与作用域
1 基类与派生类中的虚函数必须有相同的参数列表,假如基类与派生类的虚函接受的实参不同,我们就无法通过基类的引用或者指针调用派生类的虚函数。
class Base{ public: virtual int fun(); //基类中定义的虚函数 }; class Derived : public Base { int fun(int); };
因为参数不同,所以Derived这个时候有两个函数,一个是Base继承而来的虚函数fun(),一个是Derived()定义的fun(int),
这和我们的原意是不合的。
所以基类与派生类的虚函数必须有相同的形参列表,否则我们无法通过基类的指针或引用调用派生类的虚函数。