Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Enum trong C++: Hướng dẫn Sử dụng

Enum trong C++

Kiểu liệt kê (enumerated type) là kiểu dữ liệu do người dùng định nghĩa có thể được gán một giá trị từ một phạm vi giá trị.

Enum thường được dùng trong lập trình khi một biến chỉ nên lưu trữ một giá trị từ một tập hợp giá trị cụ thể. Ví dụ, nếu bạn muốn một biến chỉ lưu các ngày trong tuần, bạn có thể muốn dùng liệt kê (enumeration).

Hướng dẫn này sẽ khám phá, tham chiếu ví dụ, những kiến thức cơ bản về liệt kê trong C++, cách định nghĩa một liệt kê, và cách sử dụng liệt kê trong mã của bạn. Sau khi đọc hướng dẫn này, bạn sẽ thành thạo việc sử dụng enum trong C++.

Enum C++

Kiểu liệt kê, còn gọi là kiểu enum, được dùng để tạo kiểu dữ liệu tùy chỉnh có phạm vi giá trị cố định có thể có. Liệt kê là kiểu dữ liệu do người dùng định nghĩa.

Để định nghĩa enum trong C++, từ khóa enum được sử dụng. Đây là cú pháp định nghĩa enum trong C++:

enum tên { giá_trị_thứ_nhất, giá_trị_thứ_hai, giá_trị_thứ_ba, giá_trị_thứ_tư };

Hãy phân tích cú pháp này thành các thành phần chính:

  • enum chỉ thị mã của chúng ta tạo một liệt kê.
  • tên là tên được gán cho liệt kê của chúng ta.
  • giá_trị_thứ_nhất, giá_trị_thứ_hai, giá_trị_thứ_ba và giá_trị_thứ_tư là các giá trị được gán cho liệt kê của chúng ta. Các giá trị này được bao quanh bởi một cặp ngoặc nhọn ({}).

Ngoài ra, bạn cũng có thể thay đổi giá trị mặc định của một lớp enum. Vì vậy, nếu bạn muốn một giá trị có tên riêng, bạn có thể làm điều đó bằng cách gán mục của nó trong liệt kê một giá trị mặc định mới. Đây là mã chúng ta có thể dùng để hoàn thành tác vụ này:

enum tên { giá_trị_thứ_nhất = 0, giá_trị_thứ_hai = 1 }

Trong cú pháp này, enum của chúng ta chứa hai giá trị. Giá trị giá_trị_thứ_nhất có giá trị 0, và giá trị giá_trị_thứ_hai có giá trị 1.

Enum hữu ích vì chúng cho phép bạn xác định rõ ràng hơn các giá trị tiềm năng một biến có thể giữ. Ví dụ, nếu bạn chỉ muốn một biến lưu các ngày trong tuần, khai báo enum làm cho việc này rõ ràng trong mã của bạn là biến chỉ nên có thể lưu các ngày trong tuần.

Khai báo Enum

Giả sử chúng ta đang tạo một ứng dụng cho phép thu ngân tại tiệm bánh donut ghi lại mỗi đơn hàng đã đặt và tính chi phí của chiếc donut.

Cửa hàng của chúng ta chỉ bán một phạm vi donut hạn chế, và vì vậy chúng ta chỉ muốn thu ngân có thể ghi đơn hàng cho các donut trong kho. Các donut chúng ta muốn chương trình xử lý là: Raspberry (Mâm xôi), Strawberry (Dâu), Powdered (Bột), Chocolate (Sô-cô-la) và Cinnamon (Quế).

Đây là ví dụ hoàn hảo nơi enum có thể hữu ích. Chúng ta muốn giới hạn chương trình chỉ có thể xử lý đơn hàng theo các hương vị nêu trên, và vì vậy dùng enum là ý tưởng tốt. Đây là mã chúng ta có thể dùng để khai báo enum C++:

enum flavors { Raspberry, Strawberry, Powdered, Chocolate, Cinnamon }

Trong mã của chúng ta, chúng ta khai báo một enum gọi là flavors có năm giá trị tiềm năng. Vì vậy, khi chúng ta thử gán một biến giá trị từ enum này, các giá trị duy nhất mà biến sẽ có thể lưu là những giá trị được khai báo trong enum của chúng ta.

Nếu chúng ta muốn khai báo một biến chỉ có thể giữ giá trị từ enum flavors của chúng ta, chúng ta có thể dùng cú pháp này:

enum flavors orderFlavor.

Biến orderFlavor chúng ta vừa khai báo chỉ có thể lưu giá trị trong enum flavors.

Sử dụng Enum

Bây giờ chúng ta đã thực hiện khai báo enum, chúng ta có thể dùng nó trong mã. Hãy quay lại ví dụ tiệm donut để minh họa cách dùng enum trong chương trình C++.

Giả sử chúng ta đang xây dựng chương trình cho phép thu ngân tiệm donut ghi lại mỗi đơn hàng. Thu ngân vừa nhận đơn hàng cho một chiếc donut mâm xôi, và chúng ta muốn tạo đơn hàng cho chiếc donut mâm xôi trong chương trình. Chúng ta có thể làm như sau:

#include <iostream>
using namespace std;
enum flavors { Raspberry, Strawberry, Powdered, Chocolate, Cinnamon }
int main() {
    enum flavors orderFlavor;
    orderFlavor = Raspberry;
    cout << "Đơn hàng donut: 1x " << orderFlavor;
}

Mã của chúng ta trả về:

Đơn hàng donut: 1x Raspberry

Hãy phân tích mã của chúng ta. Đầu tiên, chúng ta đã khai báo một enum gọi là flavors lưu các hương vị bán tại tiệm donut.

Sau đó, chúng ta khai báo biến gọi là orderFlavor theo dõi loại donut được khách hàng đặt. Biến này chỉ có thể lưu giá trị trong enum flavors. Trên dòng mã tiếp theo, chúng ta gán biến enum orderFlavor giá trị Raspberry.

Tiếp theo, chúng ta in ra Đơn hàng donut: 1x ra console, theo sau là giá trị lưu trong biến orderFlavor.

Trong ví dụ này, bạn có thể thấy việc dùng enum làm cho mã của chúng ta dễ đọc hơn. Bằng cách dùng enum, rõ ràng là biến orderFlavor chỉ có thể lưu giá trị trong enum flavors. Nếu chúng ta làm việc trên chương trình phức tạp hơn, lợi ích của việc dùng enum sẽ trở nên rõ ràng hơn, vì sẽ có nhiều biến hơn mà chúng ta cần tính đến.

Thay đổi Giá trị Mặc định Enum

Ngoài ra, chúng ta cũng có thể gán enum một giá trị mặc định cụ thể. Ví dụ, giả sử chúng ta muốn xây dựng chương trình trả về giá của một chiếc donut cụ thể. Vì có phạm vi hạn chế donut khách hàng có thể đặt, chúng ta muốn dùng enum.

Chúng ta có thể dùng mã sau để tạo enum lưu cả hương vị donut và giá của chúng:

#include <iostream>
using namespace std;
enum prices { Raspberry = 2.00, Strawberry = 2.00, Powdered = 1.75, Chocolate = 1.90, Cinnamon = 2.20 }
int main() {
    enum prices orderPrice;
    orderPrice = Raspberry;
    cout << "Giá donut: $" << orderPrice;
}

Mã của chúng ta trả về:

Giá donut: $2.00

Trong ví dụ này, chúng ta đã gán mỗi giá trị trong enum một giá trị mặc định.

Điều này có nghĩa là, khi chúng ta tham chiếu một giá trị trong enum, giá trị mặc định của nó sẽ xuất hiện thay vì tên của giá trị. Vì vậy, khi tham chiếu Chocolate, 1.90 sẽ được trả về; khi tham chiếu Cinnamon, 2.20 sẽ được trả về.

Trong chương trình chính, chúng ta đầu tiên khai báo biến gọi là orderPrice sử dụng enum prices để giới hạn các giá trị có thể có. Sau đó, chúng ta gán biến orderPrice giá trị liên kết với Raspberry trong enum prices của chúng ta.

Trên dòng tiếp theo, chúng ta in câu lệnh Giá donut: $ ra console, theo sau là giá lưu trong biến orderPrice. Trong trường hợp này, khách hàng đặt donut mâm xôi, giá $2.00, vì vậy mã của chúng ta trả về Giá donut: $2.00

Kết luận

Kiểu dữ liệu enum được dùng để tạo kiểu dữ liệu chỉ có thể lưu một tập hợp giá trị cố định. Ví dụ, một liệt kê lưu mùa chỉ sẽ lưu xuân, hạ, thu, đông. Enum hữu ích khi một biến chỉ nên có khả năng lưu một giá trị tồn tại trong một tập hợp giá trị cụ thể.

Hướng dẫn này thảo luận, tham chiếu ví dụ, cách tạo enum trong C++, cách dùng enum, và cách thay đổi giá trị mặc định được lưu bởi enum. Bây giờ bạn có kiến thức để bắt đầu sử dụng enum trong C++!