इस खंड में हम C++ में nullptr देखेंगे। नलप्टर सूचक अक्षर को दर्शाता है। यह std::nullptr_t प्रकार का प्रचलन है। इसमें किसी भी सूचक प्रकार के 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(NULL); //it will call my_func(char *), but will generate compiler error }
आउटपुट
[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 की अपेक्षा की जाती है। NULL की तरह, nullptr को भी किसी भी पॉइंटर टाइप में बदला जा सकता है। लेकिन यह पूर्ण रूप से NULL जैसे अभिन्न प्रकार में परिवर्तनीय नहीं है।