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

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


C++ में ऐसा कोई ऑपरेटर नहीं है। कभी-कभी, हमें रैपर प्रकार बनाने की आवश्यकता होती है। उदाहरण के लिए, unique_ptr, shared_ptr, optional और इसी तरह के प्रकार। आमतौर, इन प्रकारों में .get नामक एक एक्सेसर मेंबर फ़ंक्शन होता है लेकिन वे ऑपरेटर-> को सीधे निहित मान तक पहुंच का समर्थन करने के लिए भी प्रदान करते हैं जैसे सामान्य पॉइंटर्स करते हैं।

समस्या यह है कि कभी-कभी हमारे पास इनमें से कुछ प्रकार एक-दूसरे में नेस्टेड होते हैं। इसका मतलब है कि हमें .get को कई बार कॉल करने की आवश्यकता है या तब तक बहुत सारे डीरेफरेंस ऑपरेटर्स की आवश्यकता होती है जब तक हम मान तक नहीं पहुंच जाते।

कुछ ऐसा:

wrapper<wrapper<std::string>> wp;
wp.get().get().length();
wp.get()->length();

यह थोड़ा बदसूरत हो सकता है। यदि हम एक .get() को एरो से बदल सकते हैं, तो यह अच्छा होगा यदि हम दूसरे .get() को भी बदल सकें। इसके लिए, C++98 ने एक लॉन्ग एरो ऑपरेटर पेश किया।

wrapper<wrapper<std::string>> wp;
wp--->length();

यदि हमारे पास रैपिंग की एक और परत है? बस एक लंबा एरो बनाएं।

wrapper<wrapper<wrapper<std::string>>> wp;
wp----->length();

लॉन्ग एरो एक ऑपरेटर नहीं है, बल्कि कई ऑपरेटर्स का संयोजन है। इस मामले में, एक सामान्य -> ऑपरेटर और पोस्टफिक्स डिक्रीमेंट ऑपरेटर --।

इसलिए, जब हम wp---->length() लिखते हैं, तो कंपाइलर ((wp--)--)->length() देखता है।

यदि हम पोस्टफिक्स -- को डीरेफरेंस ऑपरेटर के समान परिभाषित करते हैं, तो हमें लॉन्ग एरो, और यहां तक कि लंबे एरो ऑपरेटर्स मिलते हैं:

template <typename T>
class wrapper {
public:
    T* operator->() { return &t; }
    T& operator--(int) { return t; }
private:
    T t;
};
  1. - विंडोज पर C++ के लिए शीर्ष IDE

    बड़े प्रोजेक्ट्स को केवल टेक्स्ट एडिटर्स पर प्रबंधित करना मुश्किल होता है। ऐसे मामलों में IDE का उपयोग करने से आप अधिक उत्पादक और कम निराश होंगे। विभिन्न प्रकार के IDE उपलब्ध हैं और आपको अपनी आवश्यकताओं के अनुरूप सही चुनना चाहिए। यहां विंडोज के लिए सर्वश्रेष्ठ C/C++ IDEs की सूची दी गई है। Visual S

  1. - C# में 'is' Operator का Purpose क्या है?

    C# में is Operator Check करता है कि Object का Run-Time Type दिए गए Type के साथ Compatible है या नहीं।निम्न Syntax है।expr is typeयहां, expr Expression हैtype Type का Name हैनिम्न Example C# में is Operator के उपयोग को दर्शाता है।Exampleusing System; class One { } class Two { } public class Demo { &n

  1. - C# में ऑपरेटर प्रीसिडेंस क्या है?

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