从成员变量指针返回布尔值

returning bool from member variable pointer

本文关键字:返回 布尔值 指针 变量 成员      更新时间:2023-10-16

所以我正在使用如下所示的代码:

class SomeClass : public SomeBaseClass {
    SomePointerToClass * p;
  public:
    SomeClass(SomePointerToClass* p = NULL) : p(p) {};
    void start(SomePointerToClass* sp) {
        p = sp;
    }
    bool hasStarted() {
        return p;
    }
}

我简化了一些东西,以便我可以制作一个简短的代码示例,但我认为从成员变量指针返回布尔值有点像代码。我应该改变它还是某种形式的C++惯例?

hasStarted()很好:在C++中,指针将在零/非零的基础上自动转换为bool

有些人更喜欢写return (p != nullptr)return static_cast<bool>(p),以便真正明确意图,但在这种情况下,我对此并不大惊小怪。

但是,该行为是用 C 语言实现定义的,所以不要在那里依赖它!

bool hasStarted () { return (bool) p; }

这清楚地表明"我打算这样做",而且我想说,这是一件非常合理的事情。

我有时会在可以访问指针 p 的函数中执行此操作:

if (p) ... //meaning:  if p isn't NULL...

但共识是我不应该提到返回指针 - 我确信这里的共识是正确的。 所以编辑。