Mục lục:
- Phát triển chuyển đổi UDL
- Phát triển một kiểu tùy chỉnh UDL
- Sử dụng một UDL tùy biến cho các phản ứng phụ
Video: Tạo các class của riêng bạn trong Laravel 4 2025
Thư viện chuẩn, cùng với các tính năng tích hợp sẵn của C ++, cung cấp cho bạn một mảng các literals thú vị. Tuy nhiên, giá trị thật sự của các literals trở nên rõ ràng hơn khi bạn tạo của riêng bạn.
Có nhiều nhu cầu khác nhau mà bạn có thể giải quyết bằng cách sử dụng các UDL (UDL) do người dùng định nghĩa, nhưng ba nhu cầu chung đang hỗ trợ chuyển đổi dữ liệu, làm cho các loại tuỳ chỉnh dễ dàng làm việc hơn và có được các phản ứng phụ mong muốn mà không có số lượng thông thường của các vấn đề mã hóa.
Mặc dù các ký tự được xây dựng trong hoặc Thư viện chuẩn có cả dạng tiền tố và hậu tố, bạn chỉ có thể tạo ra các hình thức hậu tố khi xác định các chữ cái của riêng bạn. Ngoài ra, hậu tố phải bắt đầu với một gạch dưới. Hết hạn được sử dụng để giúp ngăn ngừa xung đột với các hậu tố hiện tại và để đảm bảo các nhà phát triển khác biết rằng chữ nghĩa là một hình thức tùy chỉnh (không đạt chuẩn).
Phát triển chuyển đổi UDL
Có thể gói gọn các chuyển đổi trong một UDL. Tất cả những gì bạn cần làm khi bạn tạo một UDL như vậy là cung cấp các hậu tố thích hợp khi xác định hằng số để có được kết quả mong muốn. Ví dụ CustomUDL01 thể hiện một kỹ thuật để xác định chuyển đổi làm thay đổi phạm vi bán kính vào khu vực của một vòng tròn trong hằng số.
#include bằng cách sử dụng không gian tên std; constexpr long double operator "_circ (bán kính đôi dài) {bán kính trở lại * bán kính * 3.141592;} int main () {double x = 5.0_circ; cout <<" vùng vòng tròn là: "<< x << endl; return 0;}
Để tạo ra UDL, ví dụ dựa trên một constexpr với giá trị trả về của một đôi dài và một giá trị đầu vào, bán kính, của một đôi dài.. Phương trình để tính toán diện tích của một vòng tròn là 2 Như bạn thấy, ví dụ thực hiện phép tính chính xác như là một phần của constexpr
Bất cứ khi nào bạn tạo một UDL tùy chỉnh, trình biên dịch buộc bạn phải sử dụng loại lớn nhất cho việc chuyển đổi.Điều này có nghĩa là bạn phải sử dụng một dấu ngoặc kép dài cho các ký tự dấu chấm động và unsigned dài cho các chữ số nguyên. Ngay cả khi bạn sau đó chọn sử dụng một loại nhỏ hơn, như được thực hiện trong Ví dụ bằng cách khai báo x như là một double, chính chữ phải sử dụng kiểu lớn nhất có thể
Để khai báo một UDL của kiểu mới, ví dụ tạo ra x, sử dụng hậu tố _circ. s kết quả trên màn hình. Khi bạn chạy ví dụ này, bạn thấy giá trị chính xác đã được đặt trong x, như được hiển thị ở đây:
Vùng của vòng tròn là: 78. 5398
Phát triển một kiểu tùy chỉnh UDL
Rất nhiều mã mà bạn gặp phải phụ thuộc vào các loại tuỳ chỉnh khó có thể theo dõi và hiểu được.Tạo một UDL để đơn giản hóa mã làm cho mọi thứ trở nên rõ ràng hơn và giảm khả năng xảy ra lỗi. Ví dụ CustomUDL02 cho thấy một kiểu tùy chỉnh, toán tử được sử dụng để tạo UDL, cũng như cách UDL được sử dụng để định nghĩa một chữ.
#include bằng cách sử dụng không gian tên std; struct MyType {MyType (double Input): giá trị (Input) {} double Value;}; MyType operator "_mytype (long double Value) {return MyType (Value);} int main () {auto UDLType = 145. 6_mytype; cout << uDLType Giá trịĐể điều này kỹ thuật để làm việc, bạn phải tạo ra một constructor cho kiểu của bạn mà chấp nhận số lượng đầu vào cần thiết để cấu hình kiểu này Tối thiểu, nhà xây dựng phải chấp nhận một loại hoặc giá trị đầu vào mà người dùng cung cấp bị mất.
Loại nhu cầu cần không hỗ trợ cùng loại kích thước dữ liệu theo yêu cầu của nhà điều hành, nhưng chúng phải cùng loại.Ví dụ, bạn không thể chuyển đổi một đôi dài đến một int
Khi bạn chạy ví dụ này, bạn sẽ thấy một đầu ra giá trị là 145. 6, đó là giá trị bạn nhập vào kiểu tùy chỉnh Có thể xử lý các thiết lập khá phức tạp bằng cách sử dụng cách tiếp cận này Người dùng kiểu tùy chỉnh của bạn có được khả năng tạo ra mã rõ ràng dễ thực hiện và giải thích ngay cả khi các loại cơ bản là phức tạp.
Sử dụng một UDL tùy biến cho các phản ứng phụ
Một trong những điều thú vị nhất ses cho UDLs là tạo ra các phản ứng phụ (một hoạt động khác với hoạt động bình thường hoặc bình thường, hoặc để làm cho ứng dụng ngắn hơn và hiệu quả hơn hoặc cung cấp thêm tính linh hoạt). Bạn muốn xác định một loại hoạt động nhất định diễn ra như là một kết quả của việc xác định nghĩa đen.
Những gì bạn nhận được vẫn là một chữ, nhưng một chữ không nhất thiết phải biểu thị một giá trị mà bạn định sử dụng sau này. Ví dụ CustomUDL03 cho thấy một trong những sử dụng phi truyền thống như vậy.
#include bằng cách sử dụng không gian tên std; void operator "_countdown (unsigned long long Value) {for (int i = Giá trị; i> = 0; i--) cout << i << endl;} int main () {10_countdown; return 0;}Chú ý rằng toán tử _countdown không gắn với một cái gì đó mà bạn thường kết hợp với một giá trị.Trong thực tế, nó không trả về một giá trị nào cả.Những gì bạn nhận được thay vì là một phản ứng phụ.Khi bạn chạy ví dụ này, bạn xem kết quả này
10 9 8 7 6 5 4 3 2 1 0Điều gì đã xảy ra là trình biên dịch đã thay thế 10_countdown với các báo cáo cout cá nhân, một cho mỗi vòng lặp của vòng lặp.Những gì bạn kết thúc với là 11 lệnh cout đưa ra các giá trị từ 10 đến 0 (theo thứ tự ngược lại) Tác dụng phụ UDL mở ra tất cả các loại khả năng thú vị để tạo ra mã đơn giản hóa các tác vụ lặp đi lặp lại theo cách làm cho việc sử dụng của chúng rõ ràng