किसी वर्ग या संरचना के सदस्यों तक पहुँचने के लिए डॉट और एरो ऑपरेटर दोनों का उपयोग C++ में किया जाता है। इनका उपयोग विभिन्न परिदृश्यों में किया जाता है। सी ++ में, वर्ग, संरचना, या संघ के रूप में घोषित प्रकारों को "वर्ग प्रकार" माना जाता है। तो निम्नलिखित उन तीनों को संदर्भित करता है।
-
a.b का उपयोग केवल तभी किया जाता है जब b वस्तु का सदस्य हो (या किसी वस्तु का संदर्भ) a. तो a.b के लिए, वसीयत हमेशा एक वर्ग की एक वास्तविक वस्तु (या किसी वस्तु का संदर्भ) होती है।
-
a->b अनिवार्य रूप से (*a).b के लिए एक शॉर्टहैंड नोटेशन है, यानी, यदि a किसी ऑब्जेक्ट का पॉइंटर है, तो a->bis उस ऑब्जेक्ट के प्रॉपर्टी b तक पहुंचना है, जिसकी ओर इशारा करता है।
ध्यान दें कि डॉट को ओवरलोड नहीं किया जा सकता है लेकिन -> ओवरलोड किया जा सकता है, इसलिए हम अपने स्वयं के फ़ंक्शन (ऑपरेटर-> ()) को परिभाषित कर सकते हैं जिसे इस ऑपरेटर का उपयोग होने पर कहा जाना चाहिए। इसलिए यदि a क्लास का ऑब्जेक्ट है जो ऑपरेटर को ओवरलोड करता है-> (इस तरह के सामान्य प्रकार स्मार्ट पॉइंटर्स और इटरेटर हैं), तो अर्थ जो भी क्लास डिज़ाइनर लागू करता है।
संदर्भ, अर्थात्, वस्तुओं के उपनाम हैं, इसलिए मुझे "या एक सूचक के संदर्भ" को भी जोड़ना चाहिए था। हालांकि, मैंने सोचा कि यह मददगार से ज्यादा भ्रमित करने वाला होगा, क्योंकि पॉइंटर्स (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