null类指针中的方法(c ++)

tru*_*ru7 1 c++ null

让我们说有

class Foo{

public:
       bool   error;
       ......
       bool isValid(){return error==false;}
};
Run Code Online (Sandbox Code Playgroud)

在某个地方

Foo *aFoo=NULL;
Run Code Online (Sandbox Code Playgroud)

我通常会这样做 if (aFoo!=NULL && aFoo->isValid()).....

但是如果在isValid方法中我测试了nullity:

bool isValid(){return this!=NULL && error==false)
Run Code Online (Sandbox Code Playgroud)

这将通过简单的调用简化外部测试 if (aFoo->isValid())

我已经在一些编译器中对它进行了测试并且它可以工作但是我想知道它是否是标准的并且在移植到其他环境时可能会导致问题.

Dav*_*rtz 5

编译器可以自由地优化掉检查 - 通过无效(或NULL指针)调用任何类的任何非静态成员是未定义的行为.请不要这样做.