假设有
class Foo{
public:
bool error;
......
bool isValid(){return error==false;}
};
在某处
Foo *aFoo=NULL;
我通常会做 if (aFoo!=NULL && aFoo->isValid()).....
但是如果我在 isValid 方法中测试无效性怎么办:
bool isValid(){return this!=NULL && error==false)
这将简化外部测试,只需调用 if (aFoo->isValid())
我已经在一些编译器中测试过它并且它可以工作,但我想知道它是否是标准的并且在移植到其他环境时可能会导致问题。
最佳答案
编译器可以自由地优化检查——通过无效(或 NULL
指针)调用任何类的任何非静态成员是未定义的行为。请不要这样做。
关于c++ - 空类指针中的方法 (c++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25844637/