विषय पर बढ़ें

अंतिम अद्यतन:2026-10-12

C++ dereference ऑपरेटर *

0.परिचय

आमतौर पर पॉइंटर के साथ काम करते समय हम * का उपयोग करते हैं, उदाहरण के लिए:

int a = 1;
int *ptr = a;
std::cout << *ptr << std::endl;

इसके अलावा, इसके और क्या उपयोग हैं?

जवाब हाँ है, उदाहरण के लिए, C++ में निम्नलिखित तीन और भी हैं:

  • ::*
  • .*
  • ->*

तो क्या आप जानते हैं ये तीन क्रमशः क्या दर्शाते हैं?

1.::*

::* को Pointer to member declarator कहा जाता है, यानी मेंबर declarator का पॉइंटर।

एक उदाहरण देखें:

नीचे दिए उदाहरण में आप w_ का पता कैसे निकालेंगे?

अगर आप double * d = &w_; लिखें, तो यह अमान्य होगा, क्योंकि पता नहीं w_ कहाँ है, इसलिए मेंबर declarator का पॉइंटर चाहिए, ताकि उसे बाइंड किया जा सके; इस पॉइंटर के मिलने के बाद मेंबर को एक्सेस किया जा सकता है, आगे बाकी दो पर आते हैं।

class Rectangle {
 public:
  double w_, h_;

  Rectangle(double w, double h) : w_(w), h_(h) {}
  double area() { return w_ * h_; }
};

int main() {
  Rectangle r{2.1, 3.2};
  double Rectangle::* w = &Rectangle::w_;
  r.*w = 2.2;
  std::cout << r.w_ << std::endl;
};

2..*

.* को pointer to member of object कहा जाता है, यह समझना आसान है, यह ऑब्जेक्ट के मेंबर को एक्सेस करने वाला पॉइंटर है, मेंबर का पॉइंटर आपको क्लास ऑब्जेक्ट के non-static मेंबर को refer करने देता है। मेंबर पॉइंटर का उपयोग static क्लास मेंबर की ओर नहीं किया जा सकता, क्योंकि static मेंबर का पता किसी खास ऑब्जेक्ट से संबंधित नहीं होता।

इसलिए ऊपर के उदाहरण में यह लाइन होने से मेंबर w की वैल्यू 2.2 कर दी गई।

r.*w = 2.2;

3.->*

->* को pointer to member of pointer कहा जाता है, यह और भी आसान है, .* की तरह ही है, बस यह पॉइंटर ऑब्जेक्ट के मेंबर के पते पर काम करता है,

इसलिए संगत उदाहरण बन जाता है:

Rectangle r{2.1, 3.2}, *pr;
pr = &r;
std::cout << pr->*w << std::endl;

ज़्यादा विस्तार के लिए cppreference.com पढ़ें।

https://en.cppreference.com/w/cpp/language/pointer#Pointers_to_members

क्या सीख लिया? इस सेक्शन का अंत~

संबंधित विषय

टिप्पणियाँ