用整数保存枚举是否是安全的?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这样更安全?但是People::Sex_set::MALE是标准的C++语法么?
{
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 );
}
上面是我抛的砖,跪求玉。
[解决办法]
enum class 新加的,防止自动类型转换。如果需要自动在转换的话,还是 enum 方便。
ps. 性别是 gender,sex 是性。
[解决办法]
新标准就是为了将编译器实现复杂化, 并且尽量跟 c 划清界限.
c++ 是给透彻理解 c 的人用的,
用来对付大型程序结构上的, 以及开发上的复杂性.
新标准不是这么做的.