如何覆盖C++类中的bool运算符?

Jos*_*ver 12 c++ operator-overloading operators

ReturnValue在C++中定义了一个需要报告方法是否成功的类.我希望类的对象true在成功和false出错时进行评估.我会覆盖哪个运算符来控制班级的真实性?

Dav*_*eas 19

简单的答案是提供operator bool() const,但你可能想要查看安全bool习语,而不是转换为bool(可能反过来隐式转换为其他整数类型)转换为不同的类型(指向成员函数的指针)私人类型)不接受这些转换.

  • 如果你使用最新的编译器,你可以使用新的C++ 0x特性`explicit operator bool()`来避免隐式转换. (21认同)

Oli*_*rth 8

好吧,你可以超载operator bool():

class ReturnValue
{
    operator bool() const
    {
        return true; // Or false!
    }
};
Run Code Online (Sandbox Code Playgroud)