关于虚函数、纯虚函数、重写、与重定义的理解:
- ① 任何类,无论是基类,还是子类,都可以用关键字virtual来声明虚函数。其中,只进行了定义,没有实现,称为纯虚函数。只要有一个纯虚函数的类,就是虚类,虚类只能用于被继承,不能实例化。
- ② 如果用vitual声明了虚函数,同时还进行了实现,则这个类就是实类,其子类如果重新定义了同名函数,这个叫做重写(相当于是对于虚函数的覆盖,覆盖后还是只有一个函数)
- ③ 如果父类没有用virtual关键字,子类还是重新定义了同名函数,则这个时候,这个子类的函数就叫做重定义了,重定义后会有两个函数,这种场景下,如果用父类指针指向子类对象,无法调用到子类的函数。