C++多态
在C++多态(三)中已经得知,虚函数表地址存放在对象的内存模型中,通过该指针(vfptr),可以访问到该对象的虚函数表。
class Base
{
public:
virtual void f(){
cout << "Base::f()" << endl; }
virtual void g(){
cout << "Base::g()" << endl; }
virtual void h(){
cout << "Base::h()" << endl; }
private:
int _b1 = 1;
int _b2 = 2;
};
b为Base类的对象,&b为b在内存中的地址。
一般继承下的虚函数表
一般的继承方式下,基类和派生类中的虚函数可能发生覆盖,也可能存在着自己的虚函数。
一般继承(无虚函数覆盖)
如下是继承下的无函数覆盖的情况下,继承体系中无覆盖的情况。
class Base
{
public:
virtual void f(){
cout << "Base::f()" << endl; }
virtual void g(){
cout << "Base::g()" << endl; }
virtual void h(){
cout << "Base::h()" << endl; }
private