Trang Chủ Tài chính Cá nhân Mạnh mẽ Typed Enumerations trong C + + - núm vú

Mạnh mẽ Typed Enumerations trong C + + - núm vú

Video: THAY TÔI YÊU CÔ ẤY (ĐNSTĐ) | OFFICIAL MV 4K | THANH HƯNG 2025

Video: THAY TÔI YÊU CÔ ẤY (ĐNSTĐ) | OFFICIAL MV 4K | THANH HƯNG 2025
Anonim

Lập trình là tất cả về tính dễ đọc. Thật khó để viết và duy trì một chương trình mà bạn không thể đọc được (thực sự là không thể). Một phần của việc đọc một danh sách mã nguồn là hiểu những gì các con số được sử dụng trong chương trình đại diện. Sự trợ giúp cơ bản nhất mà C ++ cung cấp là phổ biến ở #define, như trong ví dụ sau đây:

#define PI 3. 141592653589793

Giải pháp này không quan trọng đối với các giá trị cá nhân, mặc dù nó # xác định cơ chế không phải là (nói đúng) một phần của C / C ++ vì bộ tiền xử lý chạy trước trình biên dịch. Để đáp lại điều đó, C ++ 2011 giới thiệu một biểu thức biểu thức hằng

constexpr long double PI = 3. 141592653589793;

Từ khoá constexpr đưa các hằng số vào lều C ++. PI này có một kiểu thực, giống như các biến C ++ khác. C ++ có thể tạo ra các thông báo lỗi với PI có ý nghĩa hơn nhiều so với các liên quan đến 3. 14159.

Các biểu thức liên tục là tốt đối với các giá trị hằng số riêng lẻ, nhưng các hằng số thường đại diện các tập hợp các sự kiện chứ không phải các hằng tự nhiên, như trong ví dụ sau:

#define DC_OR_TERRITORY 0 #define ALABAMA 1 #define ALASKA 2 #define ARKANSAS 3 // … và như vậy …

Có lẽ các hằng số này đang được sử dụng để xác định các trạng thái, có lẽ được sử dụng như một chỉ mục vào một mảng các đối tượng trạng thái hoặc như một giá trị trong một cơ sở dữ liệu ở đâu đó.

C + + từ lâu đã có một cơ chế cải tiến để xác định các loại hằng số này - đếm:

enum STATE {DC_OR_TERRITORY, // nhận được 0 ALABAMA, // được 1 ALASKA, // được 2 ARKANSAS, // … và Sớm…};

Từ khóa enum giới thiệu một dãy các hằng được gọi là "liệt kê". Trong trường hợp này, điều tra mang tên STATE. Mỗi phần của liệt kê này được gán giá trị bắt đầu từ 0 và tăng tuần tự bằng 1, do đó DC_OR_TERRITORY được định nghĩa là 0, ALABAMA được định nghĩa là 1, v.v. Bạn có thể ghi đè lên trình tự gia tăng này bằng cách sử dụng lệnh gán như sau:

enum STATE (DC, TERRITORY = 0, ALABAMA, ALASKA, // … và như vậy …};

Phiên bản này của STATE định nghĩa một phần tử DC, được cho giá trị 0. Sau đó định nghĩa một phần tử mới TERRITORY, cũng được gán giá trị 0. ALABAMA chọn với 1, giống như trước.

Trong thực tế, lập trình có thể sử dụng liệt kê để viết mã khá dễ đọc như sau:

double taxRate (STATE s) {return taxRatesByState [s];}

Vấn đề duy nhất với cách tiếp cận này là liệt kê này không tạo ra một loại mới (như bạn nghĩ).Trong thực tế, theo tiêu chuẩn, STATE chỉ là một tên khác cho int - và các hằng số ALABAMA, ALASKA, vân vân là tất cả các kiểu const int.

trình biên dịch gcc thực sự cung cấp một enum tuyên bố theo cách này một chút quyền lực hơn đơn giản gọi nó là một hình thức int. Bạn thực sự có thể quá tải các chức năng dựa trên một loại enum:

void fn (STATE s); void fn (int n); fn (ALASKA); // kích hoạt fn (STATE)

Tiêu chuẩn năm 2011 cho phép lập trình tạo một kiểu hoàn toàn mới bằng cách sử dụng từ khóa enum. Vì người sáng tạo của tiêu chuẩn mới không muốn phá vỡ mã hiện tại, tiêu chuẩn yêu cầu thêm một từ khoá phụ để xác định một kiểu điều tra, như trong ví dụ sau:

enum class STATE (DC, TERRITORY = 0, ALABAMA, ALASKA, // … và như vậy …};

Một lớp điều tra bây giờ là một loại quy mô đầy đủ như bất kỳ lớp người dùng định nghĩa khác. Những điều sau đây thậm chí không hợp pháp nữa vì hai lý do:

int s = ALASKA;

Trước tiên, ALASKA không đổi chỉ được định nghĩa trong không gian tên STATE. Do đó, tên của hằng là STATE:: ALASKA. Thứ hai, loại không phải là int nhưng STATE. Bạn không thể gán một giá trị của kiểu STATE thành một int.

STATE s = STATE:: ALASKA;

Lập trình viên có thể tái tạo một STATE vào một int nhưng cô ấy phải làm như vậy rõ ràng -chuyển đổi rõ ràng không cắt nó với các lớp đếm:

int n = (int) STATE:: ALASKA;

Loại enum mới này cũng có thể dựa trên một trong số các loại số đếm khác ngoài chỉ là int:

enum class STATE: char {DC, // … phần còn lại của khai báo giống
Mạnh mẽ Typed Enumerations trong C + + - núm vú

Lựa chọn của người biên tập

Loại bỏ màu trong ảnh với lệnh Remove Color Command - những núm vú

Loại bỏ màu trong ảnh với lệnh Remove Color Command - những núm vú

T muốn bất kỳ màu sắc trong một hình ảnh. Với lệnh Remove Color trong Photoshop Elements 10, bạn có thể dễ dàng loại bỏ tất cả các màu từ một hình ảnh, lớp hoặc lựa chọn. Để sử dụng lệnh này, chỉ cần chọn Enhance → Adjust Color → Remove Color. Đôi khi, tẩy màu bằng lệnh này có thể để lại của bạn ...

Chỉnh sửa Ảnh Thiên nhiên của bạn với Photoshop Elements - núm vú

Chỉnh sửa Ảnh Thiên nhiên của bạn với Photoshop Elements - núm vú

Máy ảnh kỹ thuật số của bạn thực hiện tuyệt vời để chụp bản chất và hình ảnh phong cảnh. Nhưng hình ảnh kỹ thuật số nói chung cần một chút công việc. Photoshop Elements là phòng tối kỹ thuật số của bạn. Ứng dụng này có thể làm những điều kỳ diệu cho những hình ảnh mà không phải là khá đủ để snuff. Bạn cũng có thể sử dụng ứng dụng này để tăng cường hình ảnh và thêm các hình ảnh đặc biệt ...

Khám phá Các Tùy chọn In trong Photoshop Elements - Dummies

Khám phá Các Tùy chọn In trong Photoshop Elements - Dummies

Có lẽ là thách thức lớn nhất khi sử dụng các chương trình như Photoshop Elements các chuyên gia sử dụng ông nội của nó, Adobe Photoshop) đang nhận được những gì bạn thấy trên màn hình của bạn để hiển thị một bản fax hợp lý trên một trang in. Bạn có thể tìm thấy tất cả các loại sách về in màu - làm thế nào để có được màu sắc quyền, làm thế nào ...

Lựa chọn của người biên tập

RootsWeb. com trong nháy mắt - núm vú

RootsWeb. com trong nháy mắt - núm vú

RootsWeb. com là một cộng đồng trực tuyến được thiết lập tốt cho các nhà genealogist. Nó đã được khoảng một thời gian dài và đã đi qua renditions khác nhau. Vài năm trước, nó đã trở thành một phần của tổ tiên. com và vẫn gắn bó mật thiết với Tổ tiên. Trong khi Tổ tiên. com dựa chủ yếu vào các thuê bao để giữ bộ sưu tập của mình phát triển, RootsWeb. com dựa chủ yếu vào sự hào phóng ...

Cách tiếp cận Shotgun đối với Nghiên cứu về Phả hệ - những người có núm vú

Cách tiếp cận Shotgun đối với Nghiên cứu về Phả hệ - những người có núm vú

Có lẽ bạn đang tự hỏi làm thế nào để tìm người khác để chia sẻ thông tin về phả hệ. Vâng, bạn có thể bắt đầu bằng cách đọc qua sách điện thoại và gọi cho tất cả mọi người bằng tên họ bạn đang nghiên cứu. Tuy nhiên, với cách thức một số người cảm thấy về các nhà tiếp thị qua điện thoại, đây không phải là một chiến lược được đề nghị. Gửi email hàng loạt cho bất kỳ ai bạn tìm thấy với họ của bạn ...

Lựa chọn của người biên tập

Quan điểm vô thần của những đóng góp tích cực của tôn giáo - những con voi

Quan điểm vô thần của những đóng góp tích cực của tôn giáo - những con voi

Một số người vô thần cũng cảm thấy rằng tôn giáo không có đóng góp tích cực cho thế giới . Ngay cả người vô thần Bertrand Russell, một người có thẩm quyền cao trong hầu hết các ngày, tín chỉ tôn giáo chỉ với việc thiết lập lịch, nói rằng ông không thể nghĩ ra bất kỳ đóng góp khác. Hầu hết các người vô thần, ngay cả những người cảm thấy tôn giáo là một ảnh hưởng xấu tổng thể, thường có thể nghĩ rằng

Chủ nghĩa vô thần và Kinh thánh - những con voi

Chủ nghĩa vô thần và Kinh thánh - những con voi

Nhà văn khoa học viễn tưởng Isaac Asimov gọi Kinh thánh là "sức mạnh mạnh mẽ nhất cho chủ nghĩa vô thần đã từng hình thành" - và nhiều người theo chủ nghĩa vô thần đồng ý. Nhưng hầu hết mọi người chỉ quen thuộc với một người lấy mẫu cẩn thận của những đoạn văn cảm hứng từ Kinh thánh. Đối với mỗi đoạn văn truyền cảm hứng đi vào những chiếc bệ và những cái gối bằng kim, một nửa ...