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

use*_*061 -4 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() );
}
Run Code Online (Sandbox Code Playgroud)

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

Mic*_*hne 5

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