在类的NULL指针实例上调用方法是否可以?

时间:2014-06-25 12:32:30

标签: c++

此C ++代码适用于我的平台和编译器(Windows,GCC 4.7):

#include <stdio.h>

class A {
public:

    /* ... */

    int size() const
    {
        if ( this == NULL ) {
            return 0;
        }
        return m_size;
    }

private:
    int m_size;
};

int main()
{
    A* a = NULL;

    printf( "%d\n", a->size() );
}

但是这段代码是有效的标准C ++还是可移植的? 方法是否接受这个== NULL?

1 个答案:

答案 0 :(得分:5)

不,那不行。任何取消引用NULL指针都是未定义的行为。它恰好起作用,因为它不是虚拟功能(因此没有跳过对象的vtable),但这并不是做你所做的事情的借口做。