初识c++(18)之枚举(enum)、枚举类(enum class/struct)、枚举作为类的成员变量

这篇博客介绍了C++中的枚举类型,包括基础的enum,增强了安全性的enum class(enum struct),以及枚举作为类的成员变量的使用。通过代码示例展示了enum class如何限定枚举值的访问,并指定了底层类型。同时,提到了将枚举作为类成员时的一个令人惊讶的操作,但未解释其原理,邀请读者留言探讨。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;
}

解释:

---对枚举内容的引用,必须加

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值