做网站的所有代码,安卓手机优化,电商怎么做推广,长治网站制作服务一.虚函数表介绍
Virtual Table虚函数表是实现多态的 每个有虚函数的类的实现#xff0c;都有个指向虚函数的指针表#xff08;不管是父类还是子类#xff09; 指向虚表的指针是作为数据成员存在实例对象中 当调用虚函数时#xff0c;就去查找对象的虚表中指向整顿派生类函…一.虚函数表介绍
Virtual Table虚函数表是实现多态的 每个有虚函数的类的实现都有个指向虚函数的指针表不管是父类还是子类 指向虚表的指针是作为数据成员存在实例对象中 当调用虚函数时就去查找对象的虚表中指向整顿派生类函数 虚函数表就是虚函数指针组成的一个数组 对于类的普通函数使用的是静态绑定发生在编译期 对类的虚函数是动态绑定发生在运行期 虚函数表的创建是在编译期完成 虚函数按照其声明的顺序放置在虚表中 虚表中 如果子类额外加了虚函数父类的虚函数在子类的虚函数前面 虚表中子类会覆盖父类的虚函数子类没有覆盖的虚函数就沿用父类的 多重继承时每个父类都有自己的虚函数表子类的虚函数地址按照声明顺序放在第一个积累的虚表最后
二.单向继承虚表模式 三.多重继承虚表模式 四.多重继承并有重写的 五.注意
1.父类指针是不能调用子类中未覆盖父类的而是自己新加的成员函数的行为都会被编译器视为非法 2.如果父类的虚函数是private或是protected的但这些非public的虚函数同样会存在于虚函数表中所以事实上可以使用访问虚函数表的方式来访问这些non-public的虚函数但这样又是不合理的。