डॉट और एरो ऑपरेटर दोनों का उपयोग C++ में किसी वर्ग के सदस्यों तक पहुंचने के लिए किया जाता है। वे बस विभिन्न परिदृश्यों में उपयोग किए जाते हैं। सी ++ में, वर्ग, संरचना, या संघ के रूप में घोषित प्रकारों को "वर्ग प्रकार" माना जाता है। तो निम्नलिखित उन दोनों को संदर्भित करता है।
- a.b का उपयोग केवल तभी किया जाता है जब b वस्तु का सदस्य हो (या किसी वस्तु का संदर्भ[1]) a. तो a.b के लिए, a हमेशा एक वर्ग की एक वास्तविक वस्तु (या किसी वस्तु का संदर्भ) होगा।
- a →b अनिवार्य रूप से (*a).b के लिए एक शॉर्टहैंड नोटेशन है, अर्थात, यदि a किसी ऑब्जेक्ट का पॉइंटर है, तो a →b उस ऑब्जेक्ट के गुण b तक पहुंच रहा है जो इंगित करता है।
ध्यान दें कि . अतिभारित नहीं है। → एक ओवरलोडेबल ऑपरेटर है, इसलिए हम अपने स्वयं के फ़ंक्शन (ऑपरेटर → ()) को परिभाषित कर सकते हैं जिसे इस ऑपरेटर का उपयोग होने पर कॉल किया जाना चाहिए। इसलिए यदि a किसी वर्ग का ऑब्जेक्ट है जो ऑपरेटर → को अधिभारित करता है (इस तरह के सामान्य प्रकार स्मार्ट पॉइंटर्स और इटरेटर हैं), तो अर्थ वह है जो क्लास डिज़ाइनर ने लागू किया।
[1] संदर्भ, शब्दार्थ, वस्तुओं के उपनाम हैं, इसलिए मुझे #3 में भी "या एक सूचक का संदर्भ" जोड़ना चाहिए था। हालांकि, मैंने सोचा कि यह मददगार से ज्यादा भ्रमित करने वाला होगा क्योंकि पॉइंटर्स (T*&) के संदर्भ शायद ही कभी उपयोग किए जाते हैं।
उदाहरण
#include<iostream> class A { public: int b; A() { b = 5; } }; int main() { A a = A(); A* x = &a; std::cout << "a.b = " << a.b << "\n"; std::cout << "x->b = " << x->b << "\n"; return 0; }
आउटपुट
यह आउटपुट देगा -
5 5