小编pol*_*ket的帖子

当一个对象同时提供`operator!`和`operator bool`时,它在表达式`!obj`中使用?

我遇到了一个我无法自己回答的问题.此外,我没有在谷歌和这里找到答案.比如,我想在if子句中"检查对象的有效性",如下所示:

MyClass myObject;

// [some code, if any]

if (!myObject)
{
    // [do something]
}
Run Code Online (Sandbox Code Playgroud)

我们MyClass这样定义:

class MyClass
{
public:
    MyClass() { };
    virtual ~MyClass() { };
    bool operator!()
    {
        return !myBool;
    };
    operator bool()
    {
        return myBool;
    };
private:
    bool myBool = 0;
};
Run Code Online (Sandbox Code Playgroud)

我现在的问题是:在这个if子句中实际使用了哪一个重载运算符?无论哪种方式,结果显然都是一样的.

c++ overloading operator-keyword

9
推荐指数
1
解决办法
131
查看次数

标签 统计

c++ ×1

operator-keyword ×1

overloading ×1