×

Định nghĩa kiểu dữ liệu liệt kê với enum trong C++

Trong ngôn ngữ lập trình C++, kiểu dữ liệu liệt kê (enum) được sử dụng để định nghĩa một tập hợp các giá trị cố định mà một biến có thể lấy. Điều này rất hữu ích khi làm việc với các giá trị mà bạn muốn nhóm lại theo cách có ý nghĩa, tăng tính rõ ràng và dễ hiểu cho mã nguồn.

Một kiểu dữ liệu liệt kê được khai báo bằng cách sử dụng từ khóa enum tiếp theo là một danh sách các thành viên của nó. Dưới đây là ví dụ đơn giản về cách khai báo và sử dụng kiểu dữ liệu này:

#include <iostream>

enum Color {
    RED,
    GREEN,
    BLUE
};

int main() {
    Color myColor = RED;

    if (myColor == RED) {
        std::cout << "Color is red." << std::endl;
    } else if (myColor == GREEN) {
        std::cout << "Color is green." << std::endl;
    } else if (myColor == BLUE) {
        std::cout << "Color is blue." << std::endl;
    }

    return 0;
}

Mô tả chi tiết

  1. Từ khóa enum: Đây là từ khóa dùng để khai báo một kiểu liệt kê mới.
  2. Danh sách các thành viên: Bên trong dấu ngoặc nhọn {}, chúng ta liệt kê ra các giá trị mà biến kiểu liệt kê có thể nhận. Mặc định, các giá trị này được gán trị số nguyên tuần tự bắt đầu từ 0.

Ví dụ trên khai báo một kiểu liệt kê tên là Color với ba giá trị: RED, GREEN, và BLUE. Khi sử dụng kiểu dữ liệu này, biến myColor có thể nhận một trong ba giá trị trên.

Tùy chỉnh giá trị cho các thành viên

Bạn có thể tùy chỉnh giá trị bắt đầu của các thành viên bằng cách gán trực tiếp giá trị số nguyên cho chúng:

enum Color {
    RED = 1,
    GREEN = 2,
    BLUE = 5
};

Trong trường hợp này, RED sẽ có giá trị 1, GREEN có giá trị 2 và BLUE có giá trị 5. Các giá trị tiếp theo trong danh sách sẽ tăng dần theo giá trị cuối cùng nếu không được gán cụ thể.

Liệt kê kiểu enum-class

Từ C++11, một loại kiểu liệt kê an toàn hơn, enum class, đã được giới thiệu. Sử dụng enum class, bạn có thể tránh được các xung đột tên và tăng tính an toàn về kiểu dữ liệu:

#include <iostream>

enum class Color {
    RED,
    GREEN,
    BLUE
};

int main() {
    Color myColor = Color::RED;

    if (myColor == Color::RED) {
        std::cout << "Color is red." << std::endl;
    } else if (myColor == Color::GREEN) {
        std::cout << "Color is green." << std::endl;
    } else if (myColor == Color::BLUE) {
        std::cout << "Color is blue." << std::endl;
    }

    return 0;
}

Ở ví dụ này, giá trị của các thành viên cần phải được truy cập với tên kiểu dữ liệu đi kèm, chẳng hạn Color::RED thay vì chỉ RED. Điều này giúp tránh xung đột tên và tăng tính rõ ràng trong mã nguồn.

Tổng kết

Kiểu dữ liệu liệt kê là một công cụ mạnh mẽ trong C++ để định nghĩa và làm việc với các tập hợp giá trị cố định. Nó giúp đơn giản hóa mã nguồn, tăng tính rõ ràng và an toàn. Cho dù ban đầu bạn chỉ cần các kiểu liệt kê cơ bản hay các tính năng nâng cao từ enum class, việc hiểu rõ và sử dụng đúng kiểu dữ liệu này sẽ nâng cao chất lượng mã nguồn của bạn.

Comments