好的样式-返回enum或int

Good style - return enum or int?

本文关键字:enum int 返回 样式      更新时间:2023-10-16

如果我有一个定义枚举的类,那么返回该枚举的成员函数应该声明为返回该枚举,还是声明为返回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")。