含有虚函数的类
1.类的每个对象都有对应的自己的虚函数指针,虚函数指针在数据成员的最前面;
2.同一个类的不同实例共用一份虚函数表,通过一个虚函数指针指向该虚函数表(类的虚函数指针数组)
子类继承父类
1.子类除了继承父类的非静态成员外,同时将父类的虚函数指针和虚函数表继承下来;
2.当子类重写父类的虚函数时,会对继承过来的基类虚函数表的该虚函数进行覆盖;
3.若子类也创建自身的虚函数,则子类的虚函数表被追加在继承过来的基类虚函数表的后面;
4.若子类是多继承,子类自身创建的虚函数,则子类的虚函数表被追加到继承的第一个基类的虚函数表后面;
若第一个基类没有虚函数,则被追加到第二个基类的虚函数表中;
若所有的父类都没有虚函数成员,则子类自己创建一个虚函数表和虚函数指针;
5.由于继承完全拥有父类的所有, 包括数据成员与虚函数表, 所以:把一个继承类强制转换为一个基类是完全可行的