This Pointer In C++ In Hindi|This pointer क्या होता है और यह कैसे काम करता है ?

हेलो फ्रेंड्स, आज के इस ब्लॉग पोस्ट(This Pointer In C++ In Hindi) में हम C ++ में use होने वाले this pointer के बारे में बताने वाले है | जैसे कि हम जानते है कि pointer एक variable ही होता है जिसका use हम किसी और variable का address या reference को store या होल्ड करने के लिए करते है |

जबकि एक variable में हम कुछ value होल्ड करते है| C ++ में pointer का use हम किसी भी member function के अंदर object का address का hold या रिप्रेजेंट करने के लिए करते है |This Pointer In C++ In Hindi|

पर इस this pointer(This Pointer In C++ In Hindi) को समझने से पहले आपको यह समझना बहुत जरुरी है कि कैसे एक object एक क्लास के डाटा मेंबर और मेंबर फंक्शन को देखता है या treat करता है ?

यहाँ पर हम सबसे पहले डाटा मेंबर के सन्दर्भ में बात करते है | जिन्हे हम वेरिएबल भी बोल सकते है |

प्रत्येक object हर वेरिएबल के लिए एक अपनी कॉपी रखता है |

और प्रत्येक object हर मेंबर फंक्शन कि एक सिंगल कॉपी शेयर करते है |

ऊपर लिखे दोनों पॉइंट्स का सन्दर्भ यह है कि हर ऑब्जेक्ट के पास एक वेरिएबल की अलग अलग अपनी खुद की कॉपी होती है | पर प्रत्येक ऑब्जेक्ट एक मेंबर फंक्शन अथवा मेथड की एक सिंगल कॉपी शेयर करते है |

दोस्तों पर यहाँ पर आपके दिमाग में एक question जरूर हो सकता है कि हमें this pointer(This Pointer In C++ In Hindi) कि जरुरत क्यों होती है ?

C ++ में हमें this pointer की जरुरत निम्नलिखित कारणों की वजह से होती है |

1.variable name और method name same होते है |

यहाँ पर नीचे दिए हुए प्रोग्राम में हम देख सकते है कि जो data member है num और ch उनके नाम local variable के नाम जैसे ही है जो कि setvalue () method में पास हो रहे है |

ऐसे केस में अगर हम लोकल वेरिएबल की वैल्यू को डाटा मेंबर में assign करना चाहते है तो हमें यहाँ पर this पॉइंटर का use करना पड़ेगा नहीं तो यहाँ पर compiler को यह पता नहीं चलेगा कि आप data member के object ‘s को refer कर रहे हो | इसलिए ऐसी situation में आपको this pointer का उपयोग करना ही पड़ेगा |

#include <iostream>
using namespace std;
class Demo {
private:
  int num;
  char ch;
public:
  void setMyValues(int num, char ch){
    this->num =num;
    this->ch=ch;
  }
  void displayMyValues(){
    cout<<num<<endl;
    cout<<ch;
  }
};
int main(){
  Demo obj;
  obj.setMyValues(100, 'A');
  obj.displayMyValues();
  return 0;
}

Output:

100
A

2. calling object को reference return करने के लिए |

यह this pointer का एक और example है जहाँ पर हम करंट ऑब्जेक्ट के रिफरेन्स को return करते है | जिससे कि हम फंक्शन कॉल को एक चेन में बांध सके| ऐसा करके आप करंट ऑब्जेक्ट के लिए सभी फंक्शन को एक ही बार में कॉल कर सकते है |

यहाँ पर इस नीचे दिए हुए प्रोग्राम में एक ध्यान देने वाली बात यह है कि यहाँ पर हमने second function में num ऑब्जेक्ट की वैल्यू को increment किया है |

और यह आप इस प्रोग्राम के आउटपुट में देख सकते है कि जो वैल्यू हमने first function में सेट की थी वो actual में इन्क्रीमेंट हो हो गयी है | इससे यह पता चलता है कि चेनिंग एक sequential order में होती है और यह object डाटा की वैल्यू में किये गए चेंज को retain रखती है जिसे कि अगले फंक्शन कॉल में इस्तेमाल किया जा सकता है |

#include <iostream>
using namespace std;
class Demo {
private:
  int num;
  char ch;
public:
  Demo &setNum(int num){
    this->num =num;
    return *this;
  }
  Demo &setCh(char ch){
    this->num++;
    this->ch =ch;
    return *this;
  }
  void displayMyValues(){
    cout<<num<<endl;
    cout<<ch;
  }
};
int main(){
  Demo obj;
  //Chaining calls
  obj.setNum(100).setCh('A');
  obj.displayMyValues();
  return 0;
}

Output:

101
A

यह this pointer केवल non -static member function के अंदर रहता है जबकि static member function में यह नहीं रहता है | क्योकि static member function को बिना object create किये ही class नाम कि सहायता से ही कॉल कर सकते है |

Friend function में यह this pointer(This Pointer In C++ In Hindi) नहीं होता है क्योकि friend function class का मेंबर नहीं होता है |

Conclusion:

तो दोस्तों इस ब्लॉग(This Pointer In C++ In Hindi) में हमने C++ में use होने वाले This pointer के बारे में जाना | कि कैसे हम This pointer की मदद से हम लोकल variable जो कि एक फंक्शन में पास किये जाते है को अपने instance variable अथवा member variable में assign करते है | This pointer की मदद से हम यह object reference provide करते है जिससे की compiler इसे आसानी से समझ सके| और दूसरा हमने यह सीखा कि कैसे हम एक करंट object के रिफरेन्स को कैसे return कर सकते है |

इस ब्लॉग(This Pointer In C++ In Hindi) को लेकर आपके मन में कोई भी प्रश्न है तो आप हमें इस पते [email protected]पर ईमेल लिख सकते है|

आशा करता हूँ, कि आपने इस पोस्ट (This Pointer In C++ In Hindi) को खूब एन्जॉय किया होगा|

आप स्वतंत्रता पूर्वक अपना बहुमूल्य फीडबैक और कमेंट यहाँ पर दे सकते है|

आपका समय शुभ हो|

Anurag

I am a blogger by passion, a software engineer by profession, a singer by consideration and rest of things that I do is for my destination.