一:继承
1:定义为virtual的函数是基类希望派生类重新定义的,基类希望派生类继承的的函数不能定义为虚函数。
2:动态绑定:绑定的是对象的动态类型,某特性(比如函数)依赖于对象的动态类型,发生在运行期C++中, 通过基类的引用(或指针)调用虚函数时,发生动态绑定。引用(或指针)既可以指向基类对象,也可以 指向派生类对象,这是动态绑定的关键。
二:定义基类和派生类
1:基类的析构函数,一般都定义为虚函数。
2:除了构造函数之外,任意非static成员函数都可以是虚函数。
3:保留字virtual只能出现在类内部的成员函数的声明上,不能出现在类定义体外部出现的函数定义上。
4:private成员只能由基类成员和余元访问
三:派生类
1:派生类一般会重新定义所继承的虚函数。如果派生类没有重定义某个虚函数,则使用基类中定义的版本。
2:派生类中虚函数的声明必须与基类中的定义方式完全相同。
3:一旦函数在基类中呗声明为虚函数,它就一直为虚函数,派生类无法改变该函数为虚函数的事实。派生类重新定义 虚函数时,virtual关键字可有可无。