虚函数注意事项和多态构成条件
虚函数只需要在声明处加vitrual关键字,注意是声明处 为了方便,可以只将基类中的函数声明为虚函数,这样所有派生类中具有遮蔽关系的同名函数都将自动成为虚函数,多继承的时候需要小心。 当在基类中定义了虚函数时,如果派生类没有定义新的函数来遮蔽此函数,那么将使用基类的虚函数。 只有派生类的虚函数覆盖基类的虚函数(函数原型相同)才能构成多态(通过基类指针访问派生类函数) 构造函数不能是虚函数 析构函数可以声明为虚函数,而且**有时候必须要声明为虚函数 ** 基类虚函数重载,子类必须遮蔽时(即将父类的重载函数遮蔽)才会调用子类函数 //基类Base class Base { public : virtual void func ( ) ; virtual void func ( int ) ; } ; void Base : : func ( ) { cout << "void Base::func()" << endl ; } void Base : : func ( int n ) { cout << "void Base::func(int)" << endl ; } //派生类Derived class Derived : public Base { public : void func ( ) ; void func ( char * ) ; } ; void Derived