यहां हम कुछ C++ उदाहरण देखेंगे और समझने की कोशिश करेंगे कि किस प्रकार का आउटपुट जनरेट होगा। फिर हम C++ में स्कोप रिजॉल्यूशन ऑपरेटर और 'this' पॉइंटर के उद्देश्य और कार्यों को समझ सकते हैं।
यदि कुछ कोड में कुछ मेंबर्स हैं जैसे 'x', और हम एक अन्य फंक्शन का उपयोग करना चाहते हैं जो उसी नाम 'x' के साथ एक आर्गुमेंट लेता है, तो उस फंक्शन में, यदि हम 'x' का उपयोग करते हैं, तो यह मेंबर वेरिएबल को छुपा देगा, और लोकल वेरिएबल का उपयोग किया जाएगा। आइए इसे एक कोड में जांचते हैं।
उदाहरण
#include <iostream>
using namespace std;
class MyClass {
private:
int x;
public:
MyClass(int y) {
x = y;
}
void myFunction(int x) {
cout << "Value of x is: " << x;
}
};
int main() {
MyClass ob1(10);
ob1.myFunction(40);
return 0;
}
आउटपुट
Value of x is: 40
क्लास के x मेंबर को एक्सेस करने के लिए, हमें 'this' पॉइंटर का उपयोग करना होगा। 'this' एक विशेष प्रकार का पॉइंटर है जो वर्तमान ऑब्जेक्ट की ओर इशारा करता है। आइए देखते हैं कि 'this' पॉइंटर इस कार्य को कैसे करने में मदद करता है।
उदाहरण
#include <iostream>
using namespace std;
class MyClass {
private:
int x;
public:
MyClass(int y) {
x = y;
}
void myFunction(int x) {
cout << "Value of x is: " << this->x;
}
};
int main() {
MyClass ob1(10);
ob1.myFunction(40);
return 0;
}
आउटपुट
Value of x is: 10
C++ में एक और ऑपरेटर है जिसे स्कोप रिजॉल्यूशन ऑपरेटर कहा जाता है। उस ऑपरेटर का उपयोग पैरेंट क्लास के मेंबर या कुछ स्टेटिक मेंबर्स को एक्सेस करने के लिए किया जाता है। यदि हम इसके लिए स्कोप रिजॉल्यूशन ऑपरेटर का उपयोग करते हैं, तो यह काम नहीं करेगा। इसी तरह, यदि हम स्टेटिक मेंबर के लिए 'this' पॉइंटर का उपयोग करते हैं, तो यह कुछ समस्याएं पैदा करेगा।
उदाहरण
#include <iostream>
using namespace std;
class MyClass {
static int x;
public:
void myFunction(int x) {
cout << "Value of x is: " << MyClass::x;
}
};
int MyClass::x = 50;
int main() {
MyClass ob1;
ob1.myFunction(40);
return 0;
}
आउटपुट
Value of x is: 50