কম্পিউটার

C++ এ nullptr ঠিক কি?


এই বিভাগে আমরা C++ এ nullptr দেখতে পাব। nullptr পয়েন্টার আক্ষরিক বোঝায়। এটি std::nullptr_t টাইপের একটি মূল্য। এতে যেকোন পয়েন্টার টাইপের nullptr থেকে null pointer ভ্যালু এবং যেকোন পয়েন্টার টু মেম্বার টাইপের অন্তর্নিহিত রূপান্তর বৈশিষ্ট্য রয়েছে। এই ধারণাটি বোঝার জন্য আসুন একটি প্রোগ্রাম দেখি।

উদাহরণ

#include<iostream>
using namespace std;
int my_func(int N){ //function with integer type parameter
   cout << "Calling function my_func(int)";
}
int my_func(char* str) { //overloaded function with char* type parameter
   cout << "calling function my_func(char *)";
}
int main() {
   my_func(NULL); //it will call my_func(char *), but will generate compiler error
}

আউটপুট

ওভারলোড করা 'my_func(NULL)'-এর
[Error] call of overloaded 'my_func(NULL)' is ambiguous
[Note] candidates are:
[Note] int my_func(int)
[Note] int my_func(char*)

তাহলে উপরের প্রোগ্রামে সমস্যা কি? NULL কে সাধারণত (void*)0 হিসাবে সংজ্ঞায়িত করা হয়। আমরা NULL কে ইন্টিগ্রেল টাইপে রূপান্তর করতে পারি। সুতরাং my_func(NULL) এর ফাংশন কলটি অস্পষ্ট।

যদি আমরা NULL এর জায়গায় nullptr ব্যবহার করি, তাহলে আমরা নিচের মত ফলাফল পাব -

উদাহরণ

#include<iostream>
using namespace std;
int my_func(int N){ //function with integer type parameter
   cout << "Calling function my_func(int)";
}
int my_func(char* str) { //overloaded function with char* type parameter
   cout << "calling function my_func(char *)";
}
int main() {
   my_func(nullptr); //it will call my_func(char *), but will generate compiler error
}

আউটপুট

calling function my_func(char *)

যেখানে NULL প্রত্যাশিত সব জায়গায় আমরা nullptr ব্যবহার করতে পারি। NULL-এর মতো, nullptr-কেও যেকোনো পয়েন্টার টাইপে রূপান্তর করা যায়। কিন্তু এটি NULL-এর মতো অখণ্ড টাইপের মধ্যে অন্তর্নিহিতভাবে রূপান্তরযোগ্য নয়।


  1. C++ এ মিডির উপপাদ্য

  2. C++ এ একটি ম্যাট্রিক্সের নির্ধারক?

  3. C++ এ পরিসীমা সংযোজন

  4. C++ এ রেখার প্রতিফলন