Chi tiết bài học Kiểu enum trong C++

Kiểu enum trong C++

Trong bài này, bạn sẽ được học cách thao tá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 .
Và spring, summer và winter là giá trị kiểu season .
Mặc định, spring là 0, summer là 1 và cứ như vậy. Bạn hoàn toàn có thể đổi khác giá trị mặc định của một thành phần enum trong quy trình khai báo ( nếu thiết yếu ) .

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 
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 
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 những giá trị hoàn toàn có thể khác. Ví dụ :

#include 
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à chính bới size của một số ít int là 4 bytes .
Điều này khiến enum rất tương thích khi thao tác với cờ .
Bạn cũng hoàn toàn có thể thực thi tác vụ tương tự như sử dụng cấu trúc trong C + +. Tuy nhiên, thao tác với enum cho bạn hiệu suất cao 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 phong cách thiết kế một nút bấm cho ứng dụng Windows. Bạn hoàn toàn có thể đặt cờ ITALICS, BOLD và UNDERLINE để thao tác với chữ viết .
Có một nguyên do cho việc tại sao hàng loạt 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ì những hằng số nguyên là số mũ của 2, bạn hoàn toàn có thể gộp hai hoặc nhiều hơn những 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 được cho phép bạn chọn hai hoặc nhiều hơn những cờ cùng một lúc. Ví dụ :

#include 
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 hoàn toàn có thể bổ trợ thêm cờ tùy theo nhu yế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 phong cách 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 hoàn toà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 hoàn toàn có thể khá thuận tiện trong 1 số ít 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 .