• NULL指针调用成员函数


    对应NULL指针 ,可以调用函数无引用this的非virtual 函数,对应virtual函数,由于实际是通过vtptr调用,所有也不行

    但是下面的情况

    class base1
    {
    public:
        virtual void vfunc()
        {
            cout<<"base1:vfunc()"<<endl;
            return;
        }
    
        void func()
        {
            return;
        }
    };
    
    class derived:public base1
    {
    public:
        virtual void vfunc()
        {
            cout<<"derived vfunc()"<<endl;
        }
    };
    
    
    derived *p=NULL;
    p->base1::vfunc();

    可以调用成功,问了下别人回答是:“都指定用基类的函数了,还取什么vtable, 直接是内存中的固定地址了。

    p == NULL , 调用子类的虚函数,必然先 *(vTable *)p , 这时候就我了割草的崩溃了。”

  • 相关阅读:
    SVG的引入历程
    Webstorm的常用快捷键
    TypeScript
    Vue Router
    ISO8601
    html5语义化
    删除已有的 HTML 元素
    with(){}方法
    Jquery学习笔记
    css权值问题
  • 原文地址:https://www.cnblogs.com/cavehubiao/p/3308674.html
Copyright © 2020-2023  润新知