首页 > 编程语言 >c++枚举详细介绍以及具体用法

c++枚举详细介绍以及具体用法

时间:2023-08-10 14:14:13浏览次数:39  
标签:case return 常量 enum c++ 用法 枚举 Weather

C++ 中的枚举(Enumeration)是一种用于定义命名常量集合的数据类型。枚举可以提高代码的可读性和可维护性,让您可以使用有意义的名称来表示特定的取值,而不必使用原始的数字常量。

枚举的基本语法:

enum EnumName {
    Value1,
    Value2,
    // ...
};
  • EnumName 是枚举类型的名称。
  • Value1, Value2, 等是枚举值的名称,也可以是任何有效的标识符。
  • 枚举值默认从0开始递增,可以通过显式赋值来指定具体的值。

枚举的具体用法:

  1. 代替常量: 枚举常用于替代整数常量,使代码更具可读性。
enum Color {
    Red,
    Green,
    Blue
};

Color chosenColor = Green;
  1. 避免魔法数字: 枚举可以用于避免“魔法数字”,即在代码中直接使用未经解释的数字。
void processColor(Color color) {
    if (color == Red) {
        // 处理红色
    } else if (color == Green) {
        // 处理绿色
    } else if (color == Blue) {
        // 处理蓝色
    }
}
  1. 指定枚举值: 您可以显式地为枚举值指定特定的整数值。
enum StatusCode {
    OK = 0,
    Error = -1,
    NotFound = 404
};

StatusCode result = OK;
  1. 枚举作用域: 枚举可以位于命名空间或类的作用域内。
namespace MyNamespace {
    enum Animal {
        Dog,
        Cat,
        Bird
    };
}

MyNamespace::Animal myPet = MyNamespace::Dog;
  1. 枚举类: C++11 引入了枚举类(enum class),用于解决常规枚举的一些问题,例如枚举值之间的隐式转换和名称冲突。
enum class Status {
    Active,
    Inactive
};

Status state = Status::Active;

总之,枚举是一种有助于提高代码可读性和可维护性的数据类型。它可以用于代替常量、避免魔法数字、指定特定的值以及创建命名空间和作用域内的常量集合。 C++11 引入的枚举类也提供了更好的类型安全性和可控性。
以下是一个关于天气类型的枚举示例:

#include <iostream>

enum class Weather {
    Sunny,
    Cloudy,
    Rainy,
    Snowy
};

std::string getWeatherDescription(Weather weather) {
    switch (weather) {
        case Weather::Sunny:
            return "It's sunny outside!";
        case Weather::Cloudy:
            return "It's a cloudy day.";
        case Weather::Rainy:
            return "Rain, rain, go away!";
        case Weather::Snowy:
            return "Let it snow, let it snow!";
    }
    
    return "Unknown weather";
}

int main() {
    Weather currentWeather = Weather::Cloudy;
    std::string description = getWeatherDescription(currentWeather);
    
    std::cout << description << std::endl;
    
    return 0;
}

在这个示例中,我们定义了一个枚举类型 Weather,其中包含了四种天气类型。然后,我们编写了一个函数 getWeatherDescription,根据传入的天气类型返回对应的天气描述。在 main 函数中,我们设置当前的天气类型为 Cloudy,并输出对应的天气描述。

通过使用枚举,我们能够以更具有可读性和可维护性的方式来表示天气类型,而不是直接使用数字或字符串。这可以帮助我们在代码中避免使用未解释的魔法值,并使代码更易于理解和维护。

标签:case,return,常量,enum,c++,用法,枚举,Weather
From: https://www.cnblogs.com/keep--fighting/p/17620171.html

相关文章

  • C/C++开发者必备 如何获取系统环境变量的方法
    获取系统环境变量在C/C++中是一项简单的任务。下面展示了一个纯C语言实现的方法。```c#include<stdio.h>#include<stdlib.h>intmain(void){char*pathVar;pathVar=getenv("PATH");printf("pathVar=%s",pathVar);return0;}```需要注意的是,`getenv()`函数定义......
  • 我的第一篇博客--C++课程设计
    目录前言一、题目1.数位之和2.数字排序3.字符串匹配二、问题分析1.数位之和2.数字排序3.字符串匹配三、具体代码1.数位之和2.数字排序3.字符串匹配总结前言这是我的第一篇博客,内容便是最近所做的课程设计,之后也会每天和大家分享一下刷题笔记,以及AC后的代码,希望大家的批评指正,分享大......
  • LiveData的用法
    一.实时数据LiveData在上一节中,我们学习了ViewModel,了解到ViewModel的主要作用是存放页面所需要的各种数据。我们在示例代码中定义了接口,当数据发生变化的时候,采用接口的方式实现对页面的通知。但是这种方式是有缺陷的,当要存储的数据非常多的时候,就要定义大量的接口,代码会显......
  • 域内用户名枚举
    在无域内有效凭证的情况下,枚举出域内存在的用户名,在对其进行密码喷洒获得域内有效凭证利用原理:kerberos认证的as-req阶段,请求包cname对应的值是用户名。当用户状态分别为1.用户存在且启用KDC_ERR_PREAUTH_REQUIRED2.用户存在但禁用KDC_ERR_CLIENT_REVOKEDNTSTATUS:STATUS_AC......
  • 【Nginx用法】nginx location正则表达式写法,详解Nginx location 匹配规则(很详细哦)
    本文目录一、常用规则 二、实际使用建议三、Flag标志位四、If判断指令五、全局变量六、常用正则七、Rewrite规则八、Rewrite实例8.1实例一8.2实例二九、项目实例9.1项目一9.2项目实战作为一名Java开发人员,有些东西不经常使用,很容易忘记,好比nginx配置内容,以下内容是记录了公司......
  • Go语言中省略号用法大全
    Go语言中的ellipsis(即三个连续的点...)确实有几种用途。下面是这些用途的总结:定义变参函数(VariadicFunctions):Ellipsis用于函数定义时,表明该函数可以接受任意数量的参数。这些参数会被当作一个slice来处理。例如:funcsum(nums...int)int{total:=0for_,......
  • C++ 多态深入解析
    @TOC前言在C++编程中,多态性(Polymorphism)是一种重要的概念,它允许基于对象的实际类型来调用不同的函数。多态性提供了灵活性和可扩展性,使得代码更易于维护和扩展。一、什么是多态多态性的定义:多态性是一种面向对象编程的特性,它允许使用基类的指针或引用来调用派生类对象的特定成员函......
  • 【数据结构】bitset用法
    bitset用法bitset可以说是一个多位二进制数,每八位占用一个字节,因为支持基本的位运算,所以可用于状态压缩,n位bitset执行一次位运算的时间复杂度可视为n/32.输出只能用cout1.构造:inta=5;stringb="1011";charc[4]={'1','0','1','0'};bitset<10>s1(string("1001&qu......
  • VC用法汇总
    (1)如何通过代码获得应用程序主窗口的指针?主窗口的指针保存在CWinThread::m_pMainWnd中,调用AfxGetMainWnd实现。AfxGetMainWnd()->ShowWindow(SW_SHOWMAXMIZED)//使程序最大化.(2)确定应用程序的路径UseGetModuleFileName 获得应用程序的路径,然后去掉可执行文件名。Example......
  • 8.9-上午电机座的用法 电极座基准点不是整数的话需要用点改为整数
      ......