美文网首页
c++温故知新2(虚函数表)

c++温故知新2(虚函数表)

作者: 李相赫的乐芙兰 | 来源:发表于2018-07-13 20:26 被阅读10次

    c++多态由虚函数实现:子类覆盖父类的虚函数,然后声明一个指向子类对象的父类指针p,当用p调用虚函数时,调用的是子类的虚函数

    这种机制内部由虚函数表实现

    new一个对象时,只为类中成员变量分配空间,对象之间共享成员函数

    包含虚函数的类才会有虚函数表,同属于一个类的对象共享虚函数表,但是有各自的指针_vptr指向虚表,虚表的实质是一个指针数组,里面存的是虚函数的函数指针

    类对象的首地址就是_vptr指针的地址p_vptr,取p_vptr的值就是_vptr,也就是虚函数表的地址,通过函数地址就可以直接运行虚函数

    多继承时,子类每有一个含有虚函数的父类,就有一个对应的虚表指针

    相关文章

      网友评论

          本文标题:c++温故知新2(虚函数表)

          本文链接:https://www.haomeiwen.com/subject/abbspftx.html