23枚举类型

简介: 23枚举类型

C++入门——60s从0到1

枚举类型

 

枚举类型是一种用户自定义的数据类型,它允许我们在程序中定义一组命名的常量。在C++中,枚举类型是一种非常有用的数据类型,它可以帮助我们更好地组织和管理代码。

 

本篇文章将详细介绍C++中的枚举类型,包括枚举类型的定义、枚举变量的声明和使用、枚举类型的成员函数和枚举类型的继承等内容。

 

枚举类型的定义

 

枚举类型的定义通常包含关键字enum,后跟枚举类型名和枚举常量列表。下面是一个简单的示例:

 

enum Weekday {

   Monday,

   Tuesday,

   Wednesday,

   Thursday,

   Friday,

   Saturday,

   Sunday

};

 

在上面的示例中,我们定义了一个名为Weekday的枚举类型,它包含了7个枚举常量。这些枚举常量的名称分别是Monday、Tuesday、Wednesday、Thursday、Friday、Saturday和Sunday。这些名称是区分大小写的。

 

枚举变量的声明和使用

 

我们可以使用以下语法来声明一个枚举变量:

 

enum Weekday day;

 

在上面的示例中,我们声明了一个名为day的枚举变量。需要注意的是,枚举变量的数据类型必须与枚举类型的名称相同。在本例中,枚举变量的数据类型为Weekday。

 

我们可以使用以下语法来给枚举变量赋值:

 

day = Monday; // 将枚举变量赋值为Monday

 

在上面的示例中,我们将枚举变量day赋值为Monday。需要注意的是,枚举变量的赋值必须是枚举类型的常量之一。否则编译器将会报错。

 

我们可以使用以下语法来访问枚举变量的值:

 

cout << "The day is " << day << endl; // 输出The day is Monday

 

在上面的示例中,我们输出了枚举变量的值。需要注意的是,输出时需要使用整数形式来输出枚举常量。因此,输出结果为The day is 1。

 

枚举类型的成员函数

 

我们可以像其他数据类型一样在枚举类型中添加成员函数。下面是一个示例:

 

enum class Month {
    January,
    February,
    March,
    April,
    May,
    June,
    July,
    August,
    September,
    October,
    November,
    December
};
 
ostream& operator<<(ostream& os, const Month& month) {
    os << monthName[month]; // 使用字符串数组monthName存储月份的名称
    return os;
}
 
int main() {
    Month m1 = Month::January; // 使用::运算符访问嵌套的枚举常量
    cout << "The " << m1 << " is the first month of the year." << endl; // 输出The January is the first month of the year.
    return 0;
}

 

在上面的示例中,我们定义了一个名为Month的枚举类型,并在其中添加了一个名为operator<<的成员函数。这个函数的作用是将一个Month类型的对象输出到流中。为了实现这个功能,我们使用了一个字符串数组monthName来存储月份的名称。然后我们在operator<<函数中将月份的名称输出到流中。最后我们在main函数中对Month类型的对象进行了输出。需要注意的是,在使用运算符重载时需要使用关键字operator。

 

枚举类型的继承

 

由于枚举类型是一种用户自定义的数据类型,因此它可以与其他数据类型一样进行继承。下面是一个示例:

class Shape {
public:
    virtual double area() const = 0; // pure virtual function
};
 
class Circle : public Shape { // Circle继承自Shape
private:
    double radius;
public:
    Circle(double r) : radius(r) {} // 构造函数
    double area() const override { return 3.14 * radius * radius; } // 实现area()函数
};

 

在上面的示例中,我们首先定义了一个抽象基类Shape,并在其中添加了一个纯虚函数area()。然后我们定义了一个派生类Circle,并将其继承自Shape类。最后我们在Circle类中对area()函数进行了实现。需要注意的是,在使用继承时需要在派生类的类名前加上关键字class或在类名后加上冒号(:)。

目录
相关文章
|
7月前
|
C#
C#数据类型之枚举类型
C#数据类型之枚举类型
152 0
|
7月前
|
C语言
C enum(枚举)
C enum(枚举)
38 0
|
7月前
|
安全 C++
C++程序中的枚举类型
C++程序中的枚举类型
60 1
|
7月前
|
Java C语言 C++
使用枚举类型
使用枚举类型
44 0
|
7月前
|
编译器 Linux C++
C++ “美中不足” --->强枚举类型
C++ “美中不足” --->强枚举类型
|
7月前
|
索引
06 # 枚举类型
06 # 枚举类型
89 0
|
设计模式 JSON Java
枚举类——用好枚举真的没有那么简单!
枚举类——用好枚举真的没有那么简单!
103 0
|
编译器
枚举类型详解
枚举类型详解
130 0
枚举类型详解
|
JavaScript C#
enum:枚举类型
enum:枚举类型
184 0