1.4.5 增强类型的安全性
绝对的类型安全对编程语言来说几乎是不可能达到的,不过在编译时期捕捉更多的错误则是非常有益的。在C++98/03中,枚举类会退化为整型,因此常会与其他的枚举类型混淆。这个类型的不安全根源还是在于兼容C语言。在C中枚举用起来非常便利,在C++中却是类型系统的一个大“漏勺”。因此在C++11中,标准引入了新的“强类型枚举”来解决这个问题。
enum class Color{red,blue,green};
int x=Color::red;//C++98/03中允许,C++11中错误:不存在Color->int的转换
Color y=7;//C++98/03中,C++11中错误:不存在int->Color conversion的转换
Color z=red;//C++98/03中允许,C++11中错误:red不在作用域内
Color c=Color::red;//C++98/03中错误,C++11中允许
在第5章中,我们会详细讲解诸如此类能够增强类型安全的C++11特性。