c++ - 空类指针中的方法 (c++)

标签 c++ null

假设有

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/

相关文章:

ruby-on-rails - Ruby - 为什么这个构造返回零?

c++ - 为什么/何时使用 (!!p) 而不是 (p != NULL)

c++ - 复制/move 省略需要复制/move 构造函数的显式定义

java - 我正在将字符串写入文本文件。但正在打印 null

sql-server - 用最后一个非空值填充空行值 - SQL 表

c++ - MinGW 错误 : ‘thread’ is not a member of ‘std’

c# - 如何检查字符串是否为空

c++ template specialization-specific 声明

c++ - 内存中的虚拟表布局?

c++ - c++数据结构,可根据成员的值自动对对象进行排序