虚函数本质
虚函数本质就是一个函数指针
友元函数不能声明为虚函数,但是虚函数可以作为另一个类的友元。
构造函数不可以是虚函数,若声明为虚函数:不会再次构造,没有办法创建子类中父类对象
虚析构函数,让父类指针正确的释放子类对象的内存:先调用子类的析构,再调用父类的析构
纯虚函数
含有纯虚函数的类为抽象类,抽象类是不可以实例化对象的,可以定义指针,提供同一个接口以完成不同功能;
抽象类不可以作为函数的返回值和参数,抽象类指针可以。可以实现适配器模式
把所有接口都实现了才可以实例化,只要有一个接口没有实现就是抽象类。
不管一个类中含有多少个虚函数,都只占4个字节,一个指针存储了虚函数表的地址