ভূমিকা
C++11 থেকে ব্যবহারকারী-সংজ্ঞায়িত লিটারেল (User Defined Literals - UDL) যোগ করা হয়েছে। C++-তে বিল্ট-ইন লিটারেল আছে (যেমন: 31 ইন্টিজার, 3.5 ডাবল, 'p' ক্যারেক্টার, "pq" স্ট্রিং), কিন্তু এগুলো সীমিত। প্রোগ্রামাররা কাঙ্খিত型 ডেটার জন্য নিজস্ব লিটারেল তৈরি করতে পারেন।
UDL-এর ضرورت
ধরুন, ওজন সংরক্ষণের জন্য একটি ভেরিয়েবল লাগে:
long double Weight = 3.5;
এখানে একক (unit) নেই (পাউন্ড? কিলোগ্রাম? গ্রাম?)। UDL ব্যবহার করে একক সংযুক্ত করা যায়:
weight = 5.6kg; ratio = 5.6kg / 2.1lb;
এটি কোড পঠনযোগ্য করে তোলে এবং কম্পাইল-টাইমে একক রূপান্তর সক্ষম করে।
C++ উদাহরণ
#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
ব্যাখ্যা
operator"" _kb- কিলোবাইট লিটারেল (x 1024)।operator"" _b- বাইট লিটারেল।operator"" _mb- মেগাবাইট লিটারেল (x 1024*1024)।- লিটারেল ব্যবহার:
24_kb,2_mb,10_kb,8_b।