gpt4 book ai didi

c++ - 带有枚举解释的隐式非运算符(!)?

转载 作者:搜寻专家 更新时间:2023-10-31 00:26:24 24 4
gpt4 key购买 nike

我最近看到了这段代码,我想知道它为什么有效。枚举声明:

enum BuildResult {
RESULT_ERROR,
RESULT_SUCCESS
};

稍后,此枚举用于 if 语句(忽略它可能改为 RESULT_ERROR 的事实):

if (!objectHere->build_result == ClassNameHere::RESULT_SUCCESS)

我不知道您可以使用非运算符 ! 翻转枚举的值。这是否仅适用于具有两种状态的枚举?是否有其他类型的隐式运算符可以与枚举一起使用?我确实找到了 this question关于手动声明运算符,但它似乎没有提到枚举的任何隐式运算符。

最佳答案

enum 被隐式转换为 bool。当你翻转它时,它不再是一个enum类型,而是一个boolean pr-value。

如果您将 enum 替换为类型安全的 enum class,则此转换不再可能。

当使用简单的枚举声明时,enum 右值的行为与整数完全一样。您甚至可以指定整数的类型:

enum myEnum : uint32_t { NOT, TYPE, SAFE };

(注意枚举的隐含值:{NOT=0, TYPE=1, SAFE=2})

关于c++ - 带有枚举解释的隐式非运算符(!)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52676168/

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