首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

用整数保留枚举是否是安全的?enum class是否是更好的选择

2013-08-01 
用整数保存枚举是否是安全的?enum class是否是更好的选择?这是是用整数保存枚举的方法:class People{publi

用整数保存枚举是否是安全的?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 的人用的, 
用来对付大型程序结构上的, 以及开发上的复杂性.

新标准不是这么做的.

热点排行