c++ - static_casting一个int而不是直接对其进行初始化有什么好处吗?

标签 c++ enums casting static-cast

以任何方式更安全/“更好”地做:

enum ENUM { // can be enum class too
...
};
int incoming_value_from_other_process;
auto e = static_cast<ENUM>(incoming_value_from_other_process);


auto e = ENUM(incoming_value_from_other_process); // more compact and readable, faster to type

编辑:这是用于进程内和/或网络通信的,其中枚举仅在消息中序列化然后直接转换。

最佳答案

恕我直言,直接初始化就像:

enum Value {
  kValue = 5,
};

Value e = kValue;
static_cast和您的初始化与直接初始化相比有一个缺点。通过“kValue”进行初始化可保护您免受不存在的值的影响,提高可读性等。

我认为,两种情况都是平等的。但是第二种情况更具可读性。

关于c++ - static_casting一个int而不是直接对其进行初始化有什么好处吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60601102/

相关文章:

c++ - 为什么这个在堆中调用的函数不能调用cout?

C++ : about memory management

C++ 枚举值

c++ - 计算距对象起点的距离时,_ATL_PACKING 常量有什么用?

java - 对于超出整数范围的数字,整数类型转换在 Java 中如何表现?

c++ - std::map operator[] 如何导致基本数据类型的内存泄漏?

c++ - boost 函数签名

c++ - 在具有枚举键的 map 中使用整数作为键

java - JPA 映射一个映射,其中键是一个枚举

c# - 将对象强制转换为指定类的最佳做法