相关疑难解决方法(0)

访问NULL指针上的类成员

我正在尝试使用C++,发现下面的代码非常奇怪.

class Foo{
public:
    virtual void say_virtual_hi(){
        std::cout << "Virtual Hi";
    }

    void say_hi()
    {
        std::cout << "Hi";
    }
};

int main(int argc, char** argv)
{
    Foo* foo = 0;
    foo->say_hi(); // works well
    foo->say_virtual_hi(); // will crash the app
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我知道虚方法调用崩溃,因为它需要vtable查找,并且只能使用有效对象.

我有以下问题

  1. 非虚方法如何处理say_hiNULL指针?
  2. 对象在哪里foo分配?

有什么想法吗?

c++ null virtual null-pointer

48
推荐指数
4
解决办法
2万
查看次数

当我在NULL对象指针上调用成员函数时会发生什么?

我接受了以下面试问题:

class A
{
public:
    void fun()
    {
        std::cout << "fun" << std::endl;
    }
};

A* a = NULL;
a->fun();
Run Code Online (Sandbox Code Playgroud)

执行此代码时会发生什么,为什么?


也可以看看:

c++

44
推荐指数
6
解决办法
9450
查看次数

通过NULL类指针调用类方法

我有以下代码片段:

class ABC{
public:
        int a;
        void print(){cout<<"hello"<<endl;}
};

int main(){
        ABC *ptr = NULL:
        ptr->print();
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

它运行成功.有人可以解释一下吗?

c++

38
推荐指数
6
解决办法
8466
查看次数

标签 统计

c++ ×3

null ×1

null-pointer ×1

virtual ×1