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

C++ में डॉट (.) ऑपरेटर और -> में क्या अंतर है?


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

  • a.b का उपयोग केवल तभी किया जाता है जब b ऑब्जेक्ट का सदस्य हो (या किसी ऑब्जेक्ट का संदर्भ[1]) a. तो a.b के लिए, a हमेशा एक वर्ग की एक वास्तविक वस्तु (या किसी वस्तु का संदर्भ) होगा।
  • a→b अनिवार्य रूप से (*a).b के लिए एक आशुलिपि संकेतन है, अर्थात, यदि a किसी वस्तु का सूचक है, तो a→b उस वस्तु के गुण b तक पहुंच रहा है जिसे a इंगित करता है ।

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

  1. सी # में एक इंटरफ़ेस और एक अमूर्त वर्ग के बीच क्या अंतर है?

    इंटरफेस गुणों, विधियों और घटनाओं को परिभाषित करते हैं, जो इंटरफेस के सदस्य हैं। इंटरफेस में केवल सदस्यों की घोषणा होती है। सदस्यों को परिभाषित करना व्युत्पन्न वर्ग की जिम्मेदारी है। सार वर्ग कुछ हद तक एक ही उद्देश्य की पूर्ति करते हैं, हालांकि, उनका उपयोग ज्यादातर तब किया जाता है जब बेस क्लास द्वार

  1. सी # में इंटरफेस और क्लास के बीच क्या अंतर है?

    एक इंटरफ़ेस फ़ील्ड या विधि कार्यान्वयन के बिना एक वर्ग है। यह परिभाषित विधियों को लागू नहीं कर सकता है। एक वर्ग आम तौर पर एक इंटरफ़ेस में परिभाषित विधियों को लागू करता है। इंटरफ़ेस इंटरफेस गुणों, विधियों और घटनाओं को परिभाषित करते हैं, जो इंटरफेस के सदस्य हैं। इंटरफेस में केवल सदस्यों की घोषणा होत

  1. पायथन में =और ==ऑपरेटरों के बीच क्या अंतर है?

    पायथन में =प्रतीक को असाइनमेंट . के रूप में परिभाषित किया गया है ऑपरेटर। इसके बाईं ओर एक चर और इसके दाईं ओर एक अभिव्यक्ति की आवश्यकता होती है। दाईं ओर के व्यंजक का मान बाईं ओर के चर को सौंपा गया है। चर के व्यंजक और नाम विनिमेय नहीं हैं। >>> a=10 >>> b=20 >>> c=a+b >>