是否有任何理由在c ++中使用枚举来代替已经存在的bool?

时间:2014-02-07 13:03:24

标签: c++ enums boolean

我发现了一些声明这样的枚举的代码:enum boolean {FALSE,TRUE};

是否有任何理由使用此代替c ++中已存在的普通truefalse

1 个答案:

答案 0 :(得分:5)

使用enum作为另一个用户定义的布尔值的C ++的主要缺点是它不允许从条件表达式自动转换:

enum boolean { FALSE, TRUE };

int main()
{
    boolean b;
    int i = 0;
    int j = 1;
    b = ( i == j ); // error
}

Live Example

另请参阅Herb Sutter的this old GotW column,了解C ++为何选择添加内置bool类型。