zoukankan      html  css  js  c++  java
  • 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 , 这时候就我了割草的崩溃了。”

  • 相关阅读:
    20171121
    20171117
    20171106
    20171031
    20171024
    20170924
    20170721
    商品的分类
    会员价格的修改
    会员价格删除
  • 原文地址:https://www.cnblogs.com/cavehubiao/p/3308674.html
Copyright © 2011-2022 走看看