您的位置:

c++枚举类型enum的详解

一、enum用法

1、enum关键字可以用于定义一组命名值,枚举类型可以包含常量或函数。

2、枚举类型是一种用户自定义类型,可以像具体的整数类型一样使用。

3、在不指定枚举常量值的情况下,第一个枚举成员的初始值为0,后续枚举成员的初始值默认为前一个成员的值+1。

#include <iostream>
using namespace std;

enum Weekdays {
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday,
    Sunday
};

int main() {
    Weekdays today = Wednesday;
    cout << "今天是星期" << today+1 << endl; //注意:于 enum 定义中从零开始算,所以 +1
    return 0;
}

// 今天是星期3

二、mysql enum用法

1、MySQL中的ENUM是一种数据类型,它允许我们在一个集合中定义一个值列表。

2、enum类型可以存储逗号分隔的字符串列表或数值列表。

3、使用ENUM类型可以限制列的取值范围。

CREATE TABLE fruits (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name ENUM('apple','banana','orange'),
    price FLOAT
);

三、c枚举类型enum用法

1、与C++一样,C枚举类型enum的目的是为了提高代码的可读性和可维护性。

2、在C语言中,枚举类型enum的定义如下:

enum 枚举名 {
    标识符[=整型常数],
    标识符[=整型常数],
    ……,
    标识符[=整型常数]
} 枚举变量;

3、注意,C语言中枚举类型是没有作用域概念的。

四、enum用法mysql

1、MySQL中的ENUM类型通过枚举字符串值来表示。当我们使用ENUM类型时,MySQL会验证传递给列的值是否在该列的规定值列表中。如果不是,MySQL将拒绝将该值存储在该列中。

/* 创建表 */
CREATE TABLE products (
  id   INT(11) NOT NULL AUTO_INCREMENT,
  name VARCHAR(255),
  type ENUM('fruit', 'vegetable', 'meat'),
  PRIMARY KEY (id)
);

/* 插入数据 */
INSERT INTO products (name, type)
VALUES('apple', 'fruit'), ('onion', 'vegetable'), ('beef', 'meat');

/* 查询数据 */
SELECT * FROM products;

/* 结果 */
id  name    type
1   apple   fruit
2   onion   vegetable
3   beef    meat

五、typedef enum用法

1、typedef enum用法可以将枚举定义成一种新类型,并且可以对该类型变量进行定义。

#include <iostream>
using namespace std;

typedef enum Weekdays {  
    Monday,
    Tuesday,
    Wednesday,  
    Thursday,  
    Friday,  
    Saturday,  
    Sunday  
} Weekdays; 

int main() {
    Weekdays today = Wednesday;
    cout << "今天是星期" << today+1 << endl; //注意:于 enum 定义中从零开始算,所以 +1
    return 0;
}

// 今天是星期3

六、c语言enum用法

1、C语言中枚举类型enum可以赋予地位高于0的值,而且可以定义一个常量数组。这是C语言与C++的差异之一。

#include <iostream>
using namespace std;

enum greek { alpha=1, beta=2, gamma=3 };
greek A;

int main() {
    A = beta;
    cout << "beta = " << A << endl;

    greek B;
    B = gamma;
    cout << "gamma = " << B << endl;
    return 0;
}

// beta = 2
// gamma = 3

七、enum class用法

1、C++11引入的枚举类enum class用法可以将枚举常量放置在特定的命名空间中。

2、枚举类enum class避免了枚举类型的潜在名称冲突和陈旧的约定(例如,两个枚举类型可能具有相同的名称,但具有不同的值)。

#include <iostream>
using namespace std;

enum class Days {
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday,
    Sunday
};

int main() {
    Days today = Days::Wednesday;
    switch(today) {
        case Days::Monday:
            cout << "星期一" << endl;
            break;
        case Days::Tuesday:
            cout << "星期二" << endl;
            break;
        case Days::Wednesday:
            cout << "星期三" << endl;
            break;
        case Days::Thursday:
            cout << "星期四" << endl;
            break;
        case Days::Friday:
            cout << "星期五" << endl;
            break;
        case Days::Saturday:
            cout << "星期六" << endl;
            break;
        case Days::Sunday:
            cout << "星期日" << endl;
            break;
    }
    return 0;
}

// 星期三

八、数据库enum用法

1、数据库中经常用到ENUM类型,因为它可以限制列的取值范围。

2、在数据库中,ENUM表示的是字符串而不是数字。

3、MySQL中的ENUM是一种数据类型,它允许我们在一个集合中定义一个值列表。

/* 创建表 */
CREATE TABLE attention (
id INT(11) NOT NULL AUTO_INCREMENT,
type ENUM('like', 'comment', 'follow'),
PRIMARY KEY (id)
);

/* 插入数据 */
INSERT INTO attention (type)
VALUES('like'), ('follow');

/* 查询数据 */
SELECT * FROM attention;

/* 结果 */
id  name    type
1   like    like
2   follow  follow

九、c++中enum的用法

1、C++中enum的用法可以用于枚举值的定义,这些值可以用作数组的索引、陈述语句和其他场合。

2、C++枚举类型是一种用户自定义类型,可以像具体的整数类型一样使用。

3、可以为C++枚举类型的枚举常量指定初始值。

#include <iostream>
using namespace std;

enum color {red, green, blue};
 
int main() {
   color c;
   c = blue;
   cout << c << endl; // 输出 2
   return 0;
}

十、public enum 类的用法

1、public enum类的用法可以将枚举类型声明为另一个类的公共成员,这样就可以像其他公共成员一样进行访问了。

2、在C++中,可以通过在类的定义中声明公共枚举类型来定义枚举。

#include <iostream>
using namespace std;

class MyClass {
  public:
	enum Color {RED, GREEN, BLUE};
    Color color;

    void setColor(Color c) {
        color = c;
    }

    Color getColor() {
        return color;
    }
};

int main() {
    MyClass obj;
    obj.setColor(MyClass::RED);
    cout << obj.getColor() << endl; // 输出 0
    obj.setColor(MyClass::GREEN);
    cout << obj.getColor() << endl; // 输出 1
    obj.setColor(MyClass::BLUE);
    cout << obj.getColor() << endl; // 输出 2
}

结束语

通过以上的介绍,我们可以发现C++枚举类型enum在编程中的用法是非常广泛和灵活的。它可以用于限制变量的取值范围,提高代码可读性和可维护性,以及方便的让我们使用字符串或数字来表示一组命名值,增加代码重用性和可扩展性。同时,了解枚举类型的MYSQL、C语言以及其他的一些实现方式可以更好地提高我们在对应领域的应用能力。