多态:即多种形态,基类指针或者引用可以代表所有派生的对象,它足够智能,可以分辨出每一个派生(孩子)。内部实现靠虚函数指针(vptr)和虚函数表(vtbl) 1. 含有虚函数的对象实例中,内存布局的起始地址位置会额外添加虚函数指针vptr(void**,指向虚函数表vtbl),所有内存布局会额外多出4Byte(32位)或者8Byte(64位) 2. 同一个类不同的实例,共享同一个虚函数表(虚函数表是全局的) 3. 单继承类中重写的虚函数替换虚函数表的函数地址,新的虚函数会追加到虚函数表中 4. 多继承中每一个基类会有一个虚函数表,但是派生中的虚函数只会覆盖、追加到第一张虚函数表中。如下图,派生类继承两个基类,派生类中的虚函数只会修改第一张虚函数
点赞

相关推荐

牛客网
牛客网在线编程
牛客网题解
牛客企业服务