NULL指针能够访问类成员函数

Kun*_*mar 1 c++

可能重复:
访问NULL指针上的类成员

一个非常愚蠢的问题或者可能是我的概念疑问.

    #include <iostream>

    using namespace std;

    class A
    {
            public:
            void print()
            {
                    cout<<"Printing\n";
            }
    };

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

输出是:打印

如何为a指针(即NULL)能够访问A类的成员函数

请解释......可能只是一个愚蠢的问题,但我的印象是NULL指针不会访问类的成员函数.

K-b*_*llo 6

NULL像在代码中一样取消引用指针是未定义的行为.这种不确定性的可能性之一是它可能正常工作.但它可能会在下一次崩溃,或做一些完全出乎意料的事情.

因为你没有this在你的成员函数中使用隐式参数print,所以看起来像这样的NULL指针永远不需要实际被解除引用.


Oli*_*rth 5

取消引用NULL导致未定义的行为(UB).UB并不意味着"必须崩溃"或"必须做一些奇怪的事情".