C语言中11种强类型枚举类型分别有哪些?
- 内容介绍
- 文章标签
- 相关推荐
本文共计860个文字,预计阅读时间需要4分钟。
泛型即定义一个类别,并展示系统在某一类别下个体以代码形式使用。C++98泛型存在的缺陷:无论是具名泛型还是泛型类别中的成员,都是全局范围的,其作用域也是全局的。如果在使用“泛型时,需要注意……
枚举就是定义一个类别,并且穷举统一类别下的个体以供代码使用。
C++98 枚举存在的缺陷:
- 无论是具名枚举的名字还是枚举类型中的成员,都是全局范围的,其作用域是全局的。 如果在不同的枚举中定义了相同的枚举成员,则会出现重复声明(redeclaration)错误。
enum PUBLIC_COLOR { RED, YELLOW, GREEN }; enum PRIVATE_COLOR { RED, BLACK, PURPLE }; // RED 重定义 enum PUBLIC_COLOR { WHITE, GRAY }; // PUBLIC_COLOR 重定义 int main() { int color = RED; cout << color << endl; }
你可能会想到使用命名空间来封装枚举类型,但是如果其中的某个命名空间漏写了名字则会变成匿名空间,而匿名空间中的所有枚举成员会默认变成全局命名空间下的成员。因此这种方法是不合适的。
- 枚举中的成员被设计为常量数字的别名,因此可以隐式的转换为 int 类型,但是这在某些时候是不被期望出现的。
- 枚举类型锁占用的空间大小以及符号不确定。
本文共计860个文字,预计阅读时间需要4分钟。
泛型即定义一个类别,并展示系统在某一类别下个体以代码形式使用。C++98泛型存在的缺陷:无论是具名泛型还是泛型类别中的成员,都是全局范围的,其作用域也是全局的。如果在使用“泛型时,需要注意……
枚举就是定义一个类别,并且穷举统一类别下的个体以供代码使用。
C++98 枚举存在的缺陷:
- 无论是具名枚举的名字还是枚举类型中的成员,都是全局范围的,其作用域是全局的。 如果在不同的枚举中定义了相同的枚举成员,则会出现重复声明(redeclaration)错误。
enum PUBLIC_COLOR { RED, YELLOW, GREEN }; enum PRIVATE_COLOR { RED, BLACK, PURPLE }; // RED 重定义 enum PUBLIC_COLOR { WHITE, GRAY }; // PUBLIC_COLOR 重定义 int main() { int color = RED; cout << color << endl; }
你可能会想到使用命名空间来封装枚举类型,但是如果其中的某个命名空间漏写了名字则会变成匿名空间,而匿名空间中的所有枚举成员会默认变成全局命名空间下的成员。因此这种方法是不合适的。
- 枚举中的成员被设计为常量数字的别名,因此可以隐式的转换为 int 类型,但是这在某些时候是不被期望出现的。
- 枚举类型锁占用的空间大小以及符号不确定。

