关于基类中虚函数的重载
如果基类中的声明被重载了,则应该在派生类中重新定义所有的基类版本
基类HUMAN中
virtual void Show(void) const;
virtual void Show(int nNum) const;
virtual void Show(double dNum) const;
派生类MAN中
virtual void Show(void) const;
那么派生类将会隐藏另外两个版本
A.Show(1);
A.Show(2.5);
A.Show();
前两个调用 将会产生错误
基类的析构函数 应该定义为虚函数
如果不适用虚函数的话,那么一个基类指针 指向一个 派生类, 那么当析构函数执行的时候, 便会只析构 基类, 不会析构派生类指向的成员
友元不能是虚函数,因为友元不属于类成员,只有成员才能成为虚函数
如果派生类 没有重新定义函数,则使用该函数的基类版本
如果重新定义 继承的方法 应确保与原来原型完全相同,但如果返回值类型,是基类 引用或者是指针,则可以修改成派生类的,称为返回类型协变