c++虚函数纯虚函数

虚函数:用virtual关键字声明的; 纯虚函数:前面有virtual关键字,后面有=0;

纯虚函数的作用:

在c++中作为接口使用,因为c++没有专门的interface接口,就用纯虚函数来作为接口类。

抽象类

至少有一个纯虚函数的类,叫抽象类,注意是纯虚函数;抽象类只有一个用途:为派生类提供基类。抽象类不能实例化,但是抽象类可以有指针,指针就是用来操作衍生类。
知道纯虚函数是作为接口就行了,给被人写接口的时候用纯虚函数;
一般自己写经常用的还是虚函数,如果你预判这个方法在衍生类中会重写,那就把这个函数写成虚函数,子类中可以重写,也可以不重写,(如果是纯虚函数,必须重写);
虚函数的子类继承了父类的接口和父类的实现,如果调用一个父类和子类都有的方法,那就是采用就近原则,如果子类中有自己的定义,那就调用自己的,如果子类中没有自己的定义,就去父类里面找,调用父类的,父类没有,就去祖父类中找。
父类的指针指向子类的对象;父类的指针=子类的指针;这个叫上行转换,这个是绝对安全的转换,而且是隐式的,不需要static_cast或者dynamical_cast;赋值的本质是把数据写入内存,这里主要就是 成员变量和虚函数表。成员函数不需要赋值,不需要写入内存。成员函数存储在全局数据区;下行转换并非绝对不可以,必要条件是基类中必须有虚函数,有虚函数,才说明子类中可能有实现。