Kiểu enum trong C++

Trong bài này, bạn sẽ được học cách làm việc với enum. Ngoài ra bạn cũng sẽ được học nơi mà enum thường được sử dụng trong lập trình C++.

Một enum là một kiểu người dùng định nghĩa chứa các hằng số là số nguyên. Để định nghĩa một enum, từ khóa enum cần được sử dụng.

enum season { spring, summer, autumn, winter };

Ở đây, tên của kiểu enum là season.

spring, summerwinter là giá trị kiểu season.

Mặc định, spring là 0, summer là 1 và cứ như vậy. Bạn có thể thay đổi giá trị mặc định của một phần tử enum trong quá trình khai báo (nếu cần thiết).

enum season 
{   spring = 0, 
    summer = 4, 
    autumn = 8,
    winter = 12
};

Khai báo kiểu enum

Khi bạn tạo một kiểu enum, chỉ có bản thiết kế dành cho biến được tạo. Đây là cách bạn tạo biến kiểu enum.

enum boolean { false, true };

// trong hàm
enum boolean check;

Ở đây, biến check kiểu enum Boolean được tạo ra.

Đây là cách khác để khai báo cùng biến check sử dụng cú pháp khác.

enum boolean 
{ 
   false, true
} check;

Ví dụ 1: Kiểu enum

#include <iostream>
using namespace std;

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

int main()
{
    week today;
    today = Wednesday;
    cout << "Day " << today+1;
    return 0;
}

Đầu ra

Day 4

Ví dụ 2: Thay đổi giá trị mặc định của Enum

#include <iostream>
using namespace std;

enum seasons { spring = 34, summer = 4, autumn = 9, winter = 32};

int main() {

    seasons s;

    s = summer;
    cout << "Summer = " << s << endl;

    return 0;
}

Đầu ra

Summer = 4

Tại sao enum lại được sử dụng trong lập trình C++?

Một biến enum chỉ nhận một giá trị trong số rất nhiều các giá trị có thể khác. Ví dụ:

#include <iostream>
using namespace std;

enum suit {
    club = 0,
    diamonds = 10,
    hearts = 20,
    spades = 3
} card;

int main() 
{
    card = club;
    cout << "Size of enum variable " << sizeof(card) << " bytes.";   
    return 0;
}

Đầu ra

Size of enum variable 4 bytes.

Đó là bởi vì kích thước của một số int là 4 bytes.

Điều này khiến enum rất phù hợp khi làm việc với cờ.

Bạn cũng có thể thực hiện tác vụ tương tự sử dụng cấu trúc trong C++. Tuy nhiên, làm việc với enum cho bạn hiệu quả cao hơn do tính khả chuyển của nó.

Sử dụng enum cho cờ như thế nào?

Cùng lấy một ví dụ:

enum designFlags {
	ITALICS = 1,
	BOLD = 2,
	UNDERLINE = 4
} button;

Giả sử bạn đang thiết kế một nút bấm cho ứng dụng Windows. Bạn có thể đặt cờ ITALICS, BOLDUNDERLINE để làm việc với chữ viết.

Có một lý do cho việc tại sao toàn bộ hằng số nguyên đều là số mũ của 2 trong đoạn mã giả trên.

// Xét theo dạng nhị phân

ITALICS = 00000001
BOLD = 00000010
UNDERLINE = 00000100

Vì các hằng số nguyên là số mũ của 2, bạn có thể gộp hai hoặc nhiều hơn các cờ cùng một lúc mà không sợ bị trùng lặp bằng cách dùng toán tử bitwise OR |. Điều này cho phép bạn chọn hai hoặc nhiều hơn các cờ cùng một lúc. Ví dụ:

#include <iostream>
using namespace std;

enum designFlags {
    BOLD = 1,
    ITALICS = 2,
    UNDERLINE = 4
};

int main() 
{
    int myDesign = BOLD | UNDERLINE; 

        //    00000001
        //  | 00000100
        //  ___________
        //    00000101

    cout << myDesign;

    return 0;
}

Đầu ra

5

Với đầu ra là 5, bạn luôn luôn biết rằng cả kiểu in đậm và gạch chân đang được sử dụng.

Ngoài ra, bạn cũng có thể bổ sung thêm cờ tùy theo nhu cầu của mình.

if (myDesign & ITALICS) {
    // mã nguồn cho trường hợp chữ nghiêng
}

Ở đây, bạn đã thêm vào chữ nghiêng cho thiết kế của mình. Lưu ý rằng chỉ mã nguồn cho chữ nghiêng được viết trong thân câu lệnh if.

Bạn có thể làm được gần như mọi thứ với lập trình C++ mà không cần sử dụng enum. Tuy nhiên chúng có thể khá thuận tiện trong một số trường hợp. Và đó chính là thứ giúp phân biệt lập trình viên giỏi và lập trình viên vĩ đại.

** Nếu bạn muốn viết các nội dung đặt biệt thì hãy làm theo hướng dẫn sau

Xem thêm 10 bình luận
Viết blog mới của bạn
Báo lỗi trang
Đang tải