首页 > 编程语言 >3——of C++枚举

3——of C++枚举

时间:2023-10-19 22:14:59浏览次数:40  
标签:Aa Bb Cc Dd C++ 枚举 example

C++枚举类型

总结一下C++里面的枚举类就是为了方便字符表示数据的一种方式吧,java枚举类也差不多
默认情况下,一个枚举变量没赋值的话则编译器赋为0,后面一次加1
枚举类型默认为int类型,也可以赋值其他数字类型
枚举的取值范围就不太纠结,感觉没啥用;枚举和switch配合,很棒

enum example {   //声明example为新的数据类型,称为枚举(enumeration);
 Aa, Bb, Cc   //声明Aa, Bb, Cc等为符号常量,通常称之为枚举量,其值默认分别为0,1,2
};
enum example {
 Aa = 1, Bb, Cc = 1,Dd, Ee //1 2 1 2 3 未被初始化的枚举值的值默认将比其前面的枚举值大1。
};
enum example : unsigned char //将类型指定成unsigned char,枚举变量变成了8位整型,减少内存使用。
{
 Aa, Bb = 10, Cc
};
enum example : float  //ERROR!枚举量必须是一个整数,float不是整数(double也不行)。
{
 Aa, Bb = 10, Cc
};
Dd = Bb; //ok
Dd = Cc; //ok
Dd = 5; //Error!因为5不是枚举量
int a = Aa; //ok.枚举量是符号常量,赋值时编译器会自动把枚举量转换为int类型。

Aa++;          //非法!
Dd = Aa + Cc   //非法!
int a = 1 + Aa //Ok,编译器会自动把枚举量转换为int类型。
Dd = example(2);
//等同于
Dd = Cc
//若试图将一个超出枚举取值范围的值通过强制转换赋给枚举变量
Dd = example(10); //结果将是不确定的,这么做不会出错,但得不到想要的结果
enum enumType{
    Step0, Step1, Step2
}Step=Step0;      //注意这里在声明枚举的时候直接定义了枚举变量Step,并初始化为Step0 

switch (Step)

{

case Step0:{…;break;}

case Step1:{…;break;}

case Step2:{…;break;}

default:break;

}

java枚举类

java枚举类似乎提供了更多的功能特性,甚至还可以重写compareTo()方法来实现特殊的枚举对象的比较
但似乎项目工程里面很多时候都把枚举类当作是,“多属性值”的“静态常量”

public enum ProjectNodeCodeEnum {

    APPLICATION_ACCEPTANCE("1001" , "申请受理"),//确认受理后
    FORMAL_ACCEPTANCE("1002" , "正式评估"),//发起评审时 进行中, 专家流程结束回调
    SUBMIT_CNIO("1003" , "报送国家网信办"),//专家流程结束回调时 进行中, 报送国家网信办 已通过
    APPROVED_BY_CNIO("1004" , "国家网信办审批");//报送国家网信办时 进行中 , 国家网信办流程结束回调
    ProjectNodeCodeEnum(String code , String name) {
        this.code = code;
        this.name = name;
    }
    private final String code;


    private final String name;


    public String getCode() {
        return code;
    }

    public String getName() {
        return name;
    }
}

可以转去看之前的一篇笔记...

标签:Aa,Bb,Cc,Dd,C++,枚举,example
From: https://www.cnblogs.com/jay-home/p/17775770.html

相关文章

  • 目录:C++primer plus
    1:链接2:链接3:链接4:链接5:链接6:链接7:链接8:链接9:链接0:链接1:链接2:链接3:链接4:链接5:链接6:链接7:链接8:链接9:链接0:链接1:链接2:链接3:链接4:链接5:链接6:链接7:链接8:链接9:链接0:链接1:链接2:链接3:链接4:链接5:链接6:链接7:链接8:链接9:链接0:链接1:链接2:链接3:链接4......
  • C++ 中的 for 循环条件拆解
    引子CSP-J真题中,for循环后面括号内的几个表达式组形式特别……for循环的格式for(表达式一;表达式二;表达式三){循环体;}示例代码:循环输出1-100for(inti=1;i<=100;i++){cout<<i<<"";}for循环的执行顺序①表达式一(只执行一次)②表达式二③循环体④表......
  • C++零基础教程(函数重载)
    (文章目录)前言本篇文章来讲解函数重载,函数重载在C++中是非常重要的一个概念。一、概念讲解C++中的函数重载是指在同一个作用域中定义多个具有相同名称但参数列表不同的函数。函数重载允许使用相同的函数名来表示执行类似但具有不同参数类型或参数数量的操作。这样做可以提高......
  • LM拟合 C++
    未完成#include<iostream>#include<vector>#include<array>#include<ctime>#include<random>usingnamespacestd;voidCalc_J_fx(vector<array<double,2>>&data, double&k, vector<double......
  • C++
    1.什么是引用?简单来说就是给一个变量起别名。(本质是一个指针常量)当编译器遇到int&a=b;时,自动转成int*consta=&b,然后遇到a时编译成*a用法:数据类型&引用名=变量名inta=10;int&b=a;//b与a代表同一个数据注意①引用必须要初始化。int&b;//错误②引用一旦初始化后,就不能再更改......
  • C++ 模板特化与偏特化:解析与应用
    引言在C++中,模板是一种非常强大的特性,它们允许我们编写通用、可重用的代码。但有时,我们需要为某些特定的数据类型或类提供特殊的实现,这时就需要使用到模板特化(TemplateSpecialization)和模板偏特化(PartialTemplateSpecialization)。本文将深入探讨这两者的概念、用法和注意事项......
  • 多源最短路径的原理及C++实现
    时间复杂度O(n3),n是端点数。核心代码template<classT,TINF=1000*1000*1000>classCNeiBoMat{public:CNeiBoMat(intn,constvector<vector<int>>&edges,boolbDirect=false,boolb1Base=false){m_vMat.assign(n,vector<int>......
  • 存在负权边的单源最短路径的原理和C++实现
    负权图此图用朴素迪氏或堆优化迪氏都会出错,floyd可以处理。负环图 但floyd无法处理负权环,最短距离是无穷小。在环上不断循环。经过k条边的最短距离(可能有负权变)贝尔曼福特算法(bellman_ford)就是解决此问题的。原理循环k次,循环第i次时,m_vDis表示各点最多经过i-1条边的最短距离;v......
  • 堆优化迪氏最短单源路径原理及C++实现
    时间复杂度O(ElogE),E是边数。适用与稀疏图。使用前提边的权为正。可以非连通,非连通的距离为-1。原理优选队列(小根堆)记录两个数据:当前点到源点距离,当前点。先处理距离小的点;如果距离相等,先处理谁都可以。可以用pair记录,不用重写小于。优先队列只记录如下情况的距离:一,{0,源点}。二,......
  • 有向图计数优化版原理及C++实现
    题目见前面章节。有向图访问计数的原理及C++实现第一版不需要拓扑排序,也不需要并集查找,直接dfs了。完成以下三个职责:一,DFS那些端点在环上。二,DFS环上各点此环的长度。三,DFS非环上各点。分析cur是当前dfs的节点,next为edges[cur]。从后向前分析:判定处理ret的值返回值找到环尾ret......