读书人

用整数保留枚举是否是安全的?enum cl

发布时间: 2013-08-01 15:23:18 作者: rapoo

用整数保存枚举是否是安全的?enum class是否是更好的选择?
这是是用整数保存枚举的方法:

class People
{
public:
enum
{
MALE,
FEMALE
};

People( int sex_for_init );

private:
int sex;
};

People::People( int sex_for_init )
:sex( sex_for_init )
{}

int main()
{
People p1( People::MALE );
}
这样安全么?是否会把人弄糊涂?

这是enum class版本的:
class People
{
public:
enum class Sex
{
MALE,
FEMALE
};

People( Sex sex_for_init );

private:
Sex sex;
};

People::People( Sex sex_for_init )
:sex( sex_for_init )
{}

int main()
{
People p1( People::Sex_set::MALE );
}
这样更安全?但是People::Sex_set::MALE是标准的C++语法么?

上面是我抛的砖,跪求玉。
[解决办法]
enum class 新加的,防止自动类型转换。如果需要自动在转换的话,还是 enum 方便。
ps. 性别是 gender,sex 是性。
[解决办法]
新标准就是为了将编译器实现复杂化, 并且尽量跟 c 划清界限.

c++ 是给透彻理解 c 的人用的,
用来对付大型程序结构上的, 以及开发上的复杂性.

新标准不是这么做的.

读书人网 >C++

热点推荐