好的样式-返回enum或int
Good style - return enum or int?
如果我有一个定义枚举的类,那么返回该枚举的成员函数应该声明为返回该枚举,还是声明为返回int?
例如:
class Foo {
public:
enum Stooge { larry, moe, curly};
Stooge WhoToPoke();
// OR: int WhoToPoke(); ???
}
我一直在声明这样一个方法作为返回enum,但不知道如果我将其声明为int,它是"更好的样式",还是在某种程度上更适用于客户端。
enum
为调用者提供了一些类型安全。。。例如,当需要Foo::Stooge
时,它们不能将int
作为参数传递,或者用(uncast)int
或其他类型的enum
初始化Foo::Stooge。
BobTFish的评论正确地指出,仍然有很多讨厌的代码可以编译——比我记忆中的还要多,因为我没有试图写糟糕的代码来不断探索编译器检查的边缘!C++11对enum class
的进行了改进
此外,如果你添加一个std::ostream& operator<<(std::ostream&, Stooge)
函数,那么他们可以流式传输值——实现可以保证一个符号名称(即,他们实际上会在流中看到"larry"、"moe"或"curial")。
相关文章:
- 为什么在全局范围内使用"extern int a"似乎不行?
- enum是C++中的宏变量还是整数变量
- int(c) 和 c-'0' 之间的区别。C++
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 为什么野牛仍在使用"int yylex(void)",却找不到"int yylex(YYS
- 有符号的int和int-有没有一种方法可以在C++中区分它们
- 是否可以从int转换为enum类类型
- 在C++中,将int值赋给enum,反之亦然
- 如何限制从int到enum类的转换
- 是否可以在C++中创建 int+enum
- 为什么C/C++会自动将char/wchar_t/short/bool/enum类型转换为int
- 课堂"enum - invalid conversion from int"
- 好的样式-返回enum或int
- 如何一致地定义可同时作为enum、int和string使用的选项列表
- 将enum和string组合成一个类似map的变量,可以同时用于int和string
- 是否可以将int(enum)映射为类型
- int或char enum为int,而不是ASCII
- 安全地将int转换为enum
- 为什么非const、非int/enum静态数据成员必须在定义之外初始化?
- 为什么具有固定底层char类型的enum的值解析为fct(int)而不是fct(char) ?