子类通过继承父类而获得父类的函数和数据成员。但某种情况下,子类的行为和父类相似,但具体的操作却有差异,于是c++引入了一个关键字在函数的声明上,以轻松解决这种需求。这就是多态。
能达到类似的概念还有函数重载,同名函数遮蔽等。
virtual声明的函数可以在子类中重写。
要注意的是虚表的指针存在于对象中。因此通过类型转换,父指针的虚函数会调用子函数的函数指针。

纯虚函数

这是一个必须要重写的函数,普通的虚函数可以不必要重写。但纯虚函数必定要重写。纯虚函数没有实现的类无法产生对象。
友元函数和静态函数无法声明为虚函数,且友元函数不继承。