C++ 中的使用者定義字面量
在這裡,我們將瞭解 C++ 中使用者定義字面量的概念。從 C++ 11 版本開始,使用者定義字面量 (UDL) 被新增到 C++ 中。C++ 還為各種內建型別提供了字面量,但這些字面量是有限的。
內建字面量 -
31(整數)
3.5(雙精度浮點數)
4.2F(單精度浮點數)
'p'(字元)
31ULL(無符號長長整數)
0xD0(無符號十六進位制整數)
"pq"(字串)
除了內建字面量之外,有時我們還需要使用者定義的字面量。這背後有幾個原因。讓我們看幾個例子 -
假設我們想要定義一個重量變數,但我們無法指定單位,例如,如果我們定義如下 -
long double Weight = 3.5;
我們不知道單位是什麼(磅?公斤?克?),但使用 UDL,我們可以將單位與值關聯起來。這樣做有一些好處,它使程式碼更具可讀性,並且還支援編譯時的轉換。
weight = 5.6kg; ratio = 5.6kg/2.1lb;
要找到上述比率,需要將它們轉換為相同的單位。但是 UDL 幫助我們克服了單位轉換成本。在這種情況下,我們可以在使用者定義型別的情況下定義使用者定義的字面量,在內建型別的情況下定義新的字面量形式。UDL 無法節省太多編碼時間,但由於執行速度更快,越來越多的計算可以轉移到編譯時。
示例
讓我們看看下面的實現,以便更好地理解 -
#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;
}輸出
Size:24576 Few more MB:2121728 Size Div:5 1KB = 1024
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP