Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में एरो ऑपरेटर, `->` क्या है?


डॉट और एरो ऑपरेटर दोनों का उपयोग C++ में क्लास या स्ट्रक्चर के मेंबर्स को एक्सेस करने के लिए किया जाता है। वे केवल अलग-अलग परिदृश्यों में उपयोग किए जाते हैं। C++ में, क्लास, स्ट्रक्चर, या यूनियन के रूप में घोषित प्रकारों को "क्लास टाइप का" माना जाता है। इसलिए निम्नलिखित उन सभी तीनों को संदर्भित करता है।

  • a.b केवल तभी उपयोग किया जाता है यदि b ऑब्जेक्ट a (या ऑब्जेक्ट के रेफरेंस) का मेंबर है। तो a.b के लिए, a हमेशा एक वास्तविक ऑब्जेक्ट (या क्लास के ऑब्जेक्ट का रेफरेंस) होगा।

  • a->b अनिवार्य रूप से (*a).b के लिए एक संक्षिप्त संकेतन है, यानी, यदि a एक ऑब्जेक्ट का पॉइंटर है, तो a->b उस ऑब्जेक्ट की प्रॉपर्टी b को एक्सेस कर रहा है जिसे a इंगित करता है।

ध्यान दें कि डॉट को ओवरलोड नहीं किया जा सकता लेकिन -> को ओवरलोड किया जा सकता है, इसलिए हम अपनी खुद की फंक्शन (operator->()) परिभाषित कर सकते हैं जिसे तब बुलाया जाना चाहिए जब इस ऑपरेटर का उपयोग किया जाता है। तो यदि a एक ऐसे क्लास का ऑब्जेक्ट है जो operator-> को ओवरलोड करता है (ऐसे सामान्य प्रकार स्मार्ट पॉइंटर्स और इटरेटर्स हैं), तो अर्थ जो भी क्लास डिजाइनर ने कार्यान्वित किया है।

रेफरेंस, शब्दार्थ रूप से, ऑब्जेक्ट्स के उपनाम हैं, इसलिए मुझे "या पॉइंटर के रेफरेंस" को भी जोड़ना चाहिए। हालांकि, मुझे लगा कि यह मदद से अधिक भ्रमित करने वाला होगा, क्योंकि पॉइंटर्स के रेफरेंस (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

  1. - C++ में टर्नरी ऑपरेटर (? X : Y)

    कंडीशनल ऑपरेटर (?:) एक टर्नरी ऑपरेटर है (यह तीन ऑपरेंड्स लेता है)। कंडीशनल ऑपरेटर निम्नानुसार कार्य करता है: पहला ऑपरेंड अंतर्निहित रूप से bool में परिवर्तित होता है। इसका मूल्यांकन किया जाता है और सभी साइड इफेक्ट्स जारी रखने से पहले पूरे होते हैं। यदि पहला ऑपरेंड सच (1) मूल्यांकन करता है, तो दूसर

  1. - C++ में sizeof ऑपरेटर क्या है?

    sizeof एक कीवर्ड है, लेकिन यह एक कंपाइल-टाइम ऑपरेटर है जो बाइट्स में एक वेरिएबल या डेटा प्रकार का आकार निर्धारित करता है। sizeof ऑपरेटर का उपयोग क्लासेस, स्ट्रक्चर्स, यूनियन्स और किसी भी अन्य यूजर-डिफाइंड डेटा प्रकार के आकार को प्राप्त करने के लिए किया जा सकता है। sizeof का उपयोग करने का सिंटैक्स न

  1. - C++ में एक्सेस मॉडिफायर्स क्या हैं?

    डेटा छिपाना ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग की महत्वपूर्ण विशेषताओं में से एक है जो प्रोग्राम के फंक्शन्स को क्लास टाइप के आंतरिक प्रतिनिधित्व को सीधे एक्सेस करने से रोकता है। क्लास मेंबर्स के लिए एक्सेस प्रतिबंध को लेबल्ड एक्सेस मॉडिफायर्स द्वारा निर्दिष्ट किया जाता है: क्लास बॉडी के भीतर public, pr