为什么枚举被认为是复合类型?

时间:2010-05-26 22:55:14

标签: c++ enums types

成员的数组,函数,指针,引用,类,联合,枚举和指针是复合类型

我对复合类型的理解是基于其他类型的。例如,T[n]T*T&都基于T。那么基于什么其他类型的枚举是什么?

或者,如果我对复合类型的理解不正确,那么究竟是什么类型使它成为复合类型? 复合只是用户定义的的同义词吗?

1 个答案:

答案 0 :(得分:13)

在C ++中,枚举类型是标量类型,但同时它们是复合类型,因为它们构建在一些基本的整数类型之上。在数组或指针的情况下,您明确指定“base”类型,但是在枚举的情况下,实现隐式地自动选择特定的底层整数类型。您无法手动控制底层整数类型,这仍然不会使枚举类型不具有复合性质。

某些编译器(以及未来的C ++标准C ++ 0x)允许用户为给定的枚举类型指定基础整数类型,这使得它更明显地实际上是复合类型。有关

等示例,请参阅here
enum class Color : char { red, blue };