Computer >> Máy Tính >  >> Lập trình >> C ++

Chữ viết do người dùng xác định trong C ++


Ở đây chúng ta sẽ thấy khái niệm về các ký tự do người dùng định nghĩa trong C ++. Từ phiên bản C ++ 11, các chữ do người dùng xác định (UDL) được thêm vào trong C ++. C ++ cũng cung cấp các ký tự cho nhiều kiểu tích hợp sẵn nhưng chúng bị hạn chế.

Chữ viết có sẵn -

  • 31 (Số nguyên)

  • 3.5 (Đôi)

  • 4.2F (Phao nổi)

  • 'p' (Ký tự)

  • 31ULL (Dài dài chưa ký)

  • 0xD0 (Số nguyên thập lục phân không dấu)

  • "pq" (Chuỗi)

Ngoài các ký tự dựng sẵn, đôi khi chúng ta cần các ký tự do người dùng xác định. Có một số lý do đằng sau điều đó. Hãy để chúng tôi xem với một vài ví dụ -

Giả sử chúng ta muốn xác định một biến trọng số, nhưng chúng ta không thể chỉ định đơn vị, chẳng hạn như nếu chúng ta xác định như sau -

long double Weight = 3.5;

Chúng tôi không có ý tưởng về đơn vị, (pound ?, kilogam? Gram?) Nhưng bằng cách sử dụng UDL, chúng tôi có thể đính kèm các đơn vị với các giá trị. Có rất ít lợi ích, nó làm cho mã dễ đọc hơn và cũng hỗ trợ chuyển đổi trong thời gian biên dịch

weight = 5.6kg;
ratio = 5.6kg/2.1lb;

Để tìm tỷ lệ trên, cần phải chuyển đổi chúng sang cùng một đơn vị. Nhưng UDL giúp chúng tôi vượt qua chi phí dịch đơn vị. Trong trường hợp này, chúng ta có thể xác định các ký tự do người dùng xác định trong trường hợp các loại do người dùng xác định và dạng ký tự mới trong trường hợp các loại tích hợp sẵn. UDL không thể tiết kiệm nhiều thời gian viết mã nhưng ngày càng nhiều phép tính có thể được chuyển sang thời gian biên dịch vì tốc độ thực thi nhanh hơn.

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

#include<iostream>
#include<iomanip>
using namespace std;
unsigned long long int operator"" _kb( unsigned long long int x ) {
   return x*1024;
}
unsigned long long int operator"" _b( unsigned long long int x ) {
   return x;
}
unsigned long long int operator"" _mb( unsigned long long int x ) {
   return x * 1024 * 1024;
}
int main() {
   unsigned long long int size = 24_kb;
   cout << "Size:" << size << endl;
   cout << "Few more MB:" << ( size + 2_mb ) << endl;
   cout << "Size Div:" <<( 10_kb / 2_kb ) << endl;
   cout << "1KB = " <<( 8_b * 128_b ) << endl;
   return 0;
}

Đầu ra

Size:24576
Few more MB:2121728
Size Div:5
1KB = 1024