关于引用与指针实现多态的一些记录

    首先明白指针的组成,指针是由一个其指向的地址值和对该地址值得解释方式两部分组成。

    p1:指向基类的指针, p2:指向派生类的指针

    p1 = p2;

    当将一个派生类的指针赋给一个基类指针时,p2的地址被完全复制给p1,两者拥有相同的地址,但是对于这个地址的解释方式对于p1来说还是p1原有的解释,那在通过p1调用一个虚函数时,通过p1对地址的解释找到对应的虚表指针(此时这个虚表指针指向的是派生类的虚函数表),再通过虚表调用派生类的虚函数来实现多态。这个应该和虚表指针在基类及派生类中的位置有关系,有可能是放在了内存结构的顶部,这样不会因为子类比父类占用内存大而访问不到虚表指针,可能不是这样,还不懂

猜你喜欢

转载自www.cnblogs.com/AKUN-FYK/p/11141893.html
今日推荐