gpt4 book ai didi

c++ - 检查类方法中是否 (this == nullptr)

转载 作者:太空宇宙 更新时间:2023-11-04 15:31:02 25 4
gpt4 key购买 nike

<分区>

我想像这样替换代码:

if ((obj != nullptr) && obj->is_valid())

if (obj->is_valid())

在哪里

class Obj {
bool is_valid() {
if (this == nullptr)
return false;
// some more logic ...
}
...
};

显然有两个条件:

  1. obj 总是通过指针访问
  2. Obj::is_valid() 永远不是虚拟的

这是基于这样一个事实,即非虚拟方法接受 this 作为其第一个参数,因此

obj->is_valid();

改写为

Obj::is_valid(obj);

虽然此代码在 gcc-5.4.0 中确实按预期工作,但我的问题是这是否是合法的 C++ 代码,是否会被其他(较旧的/较新的)C++ 编译器正确解释/优化?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com