Introduction
Object Oriented Programming में जब हम class के member functions के अंदर काम करते हैं, तो कई बार ऐसी स्थिति आती है जहाँ हमें current object को refer करने की आवश्यकता होती है। विशेष रूप से तब जब function के parameters और data members के नाम समान होते हैं, तब confusion उत्पन्न हो सकता है।
इस समस्या को हल करने के लिए C++ में this pointer का उपयोग किया जाता है। यह pointer current object को refer करता है और member functions के अंदर implicitly उपलब्ध रहता है। इसके माध्यम से हम स्पष्ट रूप से बता सकते हैं कि हम किस object के data members को access कर रहे हैं।
Definition
this एक special pointer है जो class के member function के अंदर current object के address को store करता है।
यह pointer केवल member functions के अंदर ही उपयोग किया जा सकता है।
this Pointer का उपयोग
- Current object को refer करने के लिए
- Data members और parameters के बीच अंतर स्पष्ट करने के लिए
- Method chaining के लिए (advanced use)
Basic Syntax
this->dataMember
Example (Same Name Problem)
#include <iostream>
using namespace std;
class Student {
private:
int age;
public:
void setAge(int age) {
this->age = age;
}
void display() {
cout << "Age: " << age;
}
};
int main() {
Student s1;
s1.setAge(21);
s1.display();
return 0;
}
Output:
Age: 21
Working को समझना
- function parameter का नाम
ageहै - class का data member भी
ageहै this->age→ class के member को refer करता हैage→ parameter को refer करता है
Without this Pointer (Problem)
void setAge(int age) {
age = age; // wrong
}
यहाँ assignment सही नहीं होगा क्योंकि दोनों age parameter को ही refer करेंगे।
Method Chaining में this Pointer
class Demo {
private:
int x;
public:
Demo& setX(int x) {
this->x = x;
return *this;
}
void show() {
cout << x;
}
};
this Pointer के महत्वपूर्ण बिंदु
- यह केवल member functions के अंदर उपयोग होता है
- यह current object को point करता है
- Static functions में इसका उपयोग नहीं होता
- यह implicit रूप से उपलब्ध होता है
निष्कर्ष
this pointer C++ में एक महत्वपूर्ण concept है जो current object को refer करने और ambiguity को दूर करने में मदद करता है। यह program को अधिक स्पष्ट और नियंत्रित बनाता है, विशेष रूप से तब जब variable names समान हों।