当前位置: 首页 > news >正文

C++学习笔记 03 枚举

一、java枚举

import org.junit.Test;enum EnumA {A, B, C;
}public class TestEnum {@Testpublic void testEnum() {System.out.println(EnumA.A); //ASystem.out.println(EnumA.B); //BSystem.out.println(EnumA.C); //CSystem.out.println(EnumA.A.ordinal());  //0System.out.println(EnumA.B.ordinal());  //1System.out.println(EnumA.C.ordinal());  //2System.out.println("A".equals(EnumA.A.toString())); //trueSystem.out.println("B".equals(EnumA.B.toString())); //trueSystem.out.println("C".equals(EnumA.C.toString())); //trueSystem.out.println("A".equals(EnumA.A)); //falseSystem.out.println("B".equals(EnumA.B)); //falseSystem.out.println("C".equals(EnumA.C)); //false}
}

二、C++枚举

1. 枚举定义及枚举数值类型指定

  1. 枚举是用来限定确切范围的,属性的值是整型数值,默认从0开始,也可以自定义值,未被定义的依照前一个值+1赋值。
  2. 枚举的默认类型是32位整数,我们没有必要使用32位的值,可以使用8位整数:unsigned char, 占用更少空间。也可以是:int 、short、long,但不可以是float 或double,必须是整数类型。
  3. 如果是int 、short、long,打印可以直接打印出数值。若是char类型 也是数值从0开始的char, ,不能直接打印出数值,需要用(int)强转。
#include<iostream>
//默认从0开始
//可以自定义值,未被定义的依照前一个值+1赋值//枚举的默认类型是32位整数,我们没有必要使用32位的值,可以使用8位整数:unsigned char,占用更少空间
// 不可以是float 或double,必须是整数类型//enum MyEnum : int
//enum MyEnum : unsigned int
//enum MyEnum : unsigned long
//enum MyEnum : unsigned short
//enum MyEnum :  float  Xenum MyEnum : char
//enum MyEnum
{A = 1, B, C
};int main() {MyEnum e;std::cout << (int)MyEnum::A << std::endl;	//0std::cout << (int)MyEnum::B << std::endl;	//1std::cout << (int)MyEnum::C << std::endl;	//2int i = 2;switch (i) {case MyEnum::A:std::cout << "Hello" << std::endl;	//0break;case MyEnum::B:std::cout << "World" << std::endl;	//0break;case MyEnum::C:std::cout << "Hello World" << std::endl; //0break;}std::cin.get();
}

2. 类内部枚举的定义及名称规避

类内部枚举属性可以被类直接引用,所以,类内部枚举的属性值不可以和类本身的属性或方法名重复,否则无法识别

#include<iostream>class Log {
public:enum Level {LevelError, LevelWarn, LevelInfo};
private:int m_LogLevel = Level::LevelInfo;
public:void SetLevel(Level level) {m_LogLevel = level;}void Error(const char* message) {if (m_LogLevel >= 0)std::cout << "[ERROR]:" << message << std::endl;}void Warn(const char* message) {if (m_LogLevel >= 1)std::cout << "[WARNING]:" << message << std::endl;}void Info(const char* message) {if (m_LogLevel >= 2)std::cout << "[INFO]:" << message << std::endl;}};int main() {Log log;//类内部枚举属性可以被类直接引用,所以,类内部枚举的属性值不可以和类本身的属性或方法名重复,否则无法识别log.SetLevel(Log::LevelWarn);log.SetLevel(Log::Level::LevelWarn);log.Warn("Hello World");log.Error("Hello World");log.Info("Hello World");std::cin.get();
}
http://www.jsqmd.com/news/71691/

相关文章:

  • 几种护眼色
  • TinyMCE + Vue 使用
  • 2025年北京合同审查工具服务排名:合同审查工具哪个好? - mypinpai
  • 2025年推荐厚片吸塑制品厂家TOP5:吸塑制品生产厂家解析 - 工业品牌热点
  • 2025年度回弹仪厂家实力排行榜TOP10,附联系电话,重型回弹仪/一体式数显回弹仪/红外分光光度计回弹仪供应厂家口碑推荐 - 品牌推荐师
  • 2025上海卡牌印刷公司TOP5权威推荐:专业测评指南,甄选 - 工业推荐榜
  • C++学习笔记02 static关键字
  • 深入解析:STM32外设学习-串口数据包笔记-(程序)
  • 告别臃肿:为什么 Drizzle ORM 是 TypeScript 后端的未来?
  • 保存文件带上时间蹉
  • 为什么我们需要使用react提供的ChildrenAPI而不是 JavaScript 的 map?
  • 医用/低速/生物制药/血站/大容量/微量高速/血库/自动/低温冷冻/国产离心机厂家排名 2025:实力厂家、优质品牌及选购技巧 - 品牌推荐大师
  • 暂时修复龙芯+深度 25Lazarus安装lazreport的lr_dialogdesign.lpk后Lazarus程序无法启动的Bug(完善的处理方法)
  • doker批量停用和删除容器命令
  • centos7创建swap linux创建swap 创建swap
  • windriver 第10章:PCI高级功能
  • 国产替代实验室离心机实力厂家推荐:四川蜀科、湖南凯达、美瑞克仪器 - 品牌推荐大师
  • 2025年高低温试验箱国内哪家好哪家性价比高?国产高低温试验箱制造商/生产商/供应商推荐 - 品牌推荐大师
  • 接触角测量仪品牌与型号大盘点:科研与便携式、高温真空/压力专用推荐 - 品牌推荐大师1
  • 2025年北京合同审查工具服务推荐:合同审查工具哪个好? - mypinpai
  • 2025年窑湖小镇周边亲子农家乐、团建农家乐推荐:五大热门选 - 工业推荐榜
  • 泰克示波器差分探头偏置校准:完整操作指南
  • 医用/低速/生物制药/血站/大容量/微量高速/国产离心机哪个品牌好?实力厂家推荐与选购建议指南 - 品牌推荐大师
  • 2025中国别墅入户门十大品牌权威榜:深度解析与选购指南 - 匠子网络
  • IDEA中创建Spring Boot项目兼容JDK8的解决方案
  • 医用/低速/生物制药/血站/大容量/国产离心机哪家强?2025 年头部企业及优质品牌全方位对比 - 品牌推荐大师
  • 医用/低速/生物制药/血站/大容量/微量高速/血库/自动/国产离心机优质品牌有哪些?头部企业及高口碑厂家推荐 - 品牌推荐大师
  • 医用/低速/生物制药/血站/大容量/微量高速/国产离心机推荐品牌 TOP3:3大品牌及靠谱生产商盘点 - 品牌推荐大师
  • 国产盐雾腐蚀试验箱哪家好,推荐实力厂家|生产商 - 品牌推荐大师
  • 2025全球力传感器品牌价值榜——高精度测量领域十大金牌供应商技术解密 - 品牌推荐大师1