কম্পিউটার

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

  1. C++ এ অক্ষর অক্ষর কি কি?

  2. C++ এ বুলিয়ান লিটারেল কি?

  3. C++ এ টোকেন বনাম শনাক্তকারী বনাম কীওয়ার্ড

  4. C++ টোকেন বলতে আপনি কী বোঝেন?