gpt4 book ai didi

c++ - 枚举 "ghost values": what for?

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

我最近注意到一个令我非常惊讶的事实:您显然可以从 enum 类型中检索任意值并将其分配给 enum 变量,即使它不是 enum 定义的一部分(我称之为“幽灵值”)。该变量仅采用相应的整数值。

例子:

#include <iostream>

enum myEnumType { ONE = 1, TWO = 2, THREE = 3 };

int main () {

myEnumType e;

e=myEnumType(8);

std::cout << e << std::endl;

}

输出 8

我原以为这是不可能的,因为在我看来这与枚举类型的约束功能不一致。原因是什么,最重要的是,它的可能用途是什么?

最佳答案

您可以将 int 转换为 enum。 C++11 引入了“枚举类”或“强枚举”或“作用域枚举”来解决这个问题以及其他问题。

其他好处包括它们的范围和允许前向声明。

关于 Stroustrup 有很多细节的页面,他特别提到了传统枚举的三个问题:

  • 常规枚举隐式转换为 int,当有人不希望枚举充当整数时会导致错误。
  • 传统的枚举将它们的枚举器导出到周围的范围,导致名称冲突。
  • 无法指定枚举的基础类型,导致混淆、兼容性问题,并且无法进行前向声明。

关于c++ - 枚举 "ghost values": what for?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23931413/

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