enum
关于枚举一些基础的认识我就不啰嗦了,这里只写我见到的比较有意思的做法。
对枚举类型的讨论主要都是在作用于上。我就什么也不说都在下面的代码里:
#include<iostream>
using namespace std;
int main(){
enum week {Sun, Mon, Tue, Wed, Thu, Fri, Sat};
cout << Sun << endl;
cout << week::Sun << endl;
int Sun;//这句是错误的,因为枚举类型已经占用了Sun这个关键字啦,不能再使用了
return 0;
}
enum class
enum class (enum struct)这两种写法是等效的。上面的写法的缺点就是我们定义的枚举类型并没有将其内容保护起来,可以在外部随意调用,因此c++11就出现了enum class这种枚举类。
还是都在代码里:
#include<iostream>
using namespace std;
int main(){
enum class week {Sun, Mon, Tue, Wed, Thu, Fri, Sat};
enum class week1:unsigned int {Sun, Mon, Tue, Wed, Thu, Fri, Sat};//指定枚举的底层类型
cout << static_cast<int>(week::Sun) << endl;
int Sun;//这句话是对的,enum class解决了域的问题
return 0;
}
解释:
---对枚举内容的引用,必须加