小编Jin*_*hen的帖子

将对象转换为bool时,显式说明符似乎不起作用

我最近在学习C++,我注意到了一个关于cppreference例子,其中一部分是这样的:

struct B
{
    explicit B(int) { }
    explicit operator bool() const { return true; }
};

int main()
{
    B b2(2);       // OK: direct-initialization selects B::B(int)
    if (b2) ;      // OK: B::operator bool()
}
Run Code Online (Sandbox Code Playgroud)

隐式转换的介绍告诉我"当表达式在if语句或循环中使用时",此表达式(b2)的结果将被bool隐式转换为类型.

此外,显式说明符的介绍告诉我"转换函数是否显式,它不能用于隐式转换".

由于b2将被隐式if(b2)转换,并且转换函数是explicit,怎么回事if(b2)

c++ explicit type-conversion

12
推荐指数
2
解决办法
584
查看次数

标签 统计

c++ ×1

explicit ×1

type-conversion ×1