हम इस कोड में जानते हैं कि ...
Beta_ab const& getAB() const { return ab; }
^^^^^
प्रकाश डाला const
मतलब यह है कि सदस्य समारोह एक const
वस्तु का आह्वान किया जा सकता है। फ़ंक्शन की सीवी-योग्यता के बावजूद एक सदस्य फ़ंक्शन को गैर-const
ऑब्जेक्ट पर हमेशा कॉल किया जा सकता है।
इस कोड में
तो ...
Beta_ab const& getAB() const & { return ab; }
^
हम उम्मीद करनी चाहिए पर प्रकाश डाला &
भी क्या ऑब्जेक्ट के प्रकार इस सदस्य समारोह का आह्वान किया जा करने के लिए अनुमति दी है के बारे में कुछ का कहना है कि। हम सही होंगे; सी ++ 11 में, यह कहता है कि सदस्य कार्य केवल लालच पर ही बुलाया जा सकता है।
Beta_ab const& getAB() const& { return ab; }
Beta_ab && getAB() && { return ab; }
उपरोक्त उदाहरण में, पहली अधिभार lvalues पर शुरू हो जाती है, और दूसरा अधिभार गैर const
rvalues पर शुरू हो जाती है। निम्नलिखित अधिक परिचित उदाहरण के समान, क्वालिफायर के साथ साधारण समारोह मापदंडों के लिए लागू:
void setAB(AB const& _ab) { ab = _ab; }
void setAB(AB && _ab) { ab = std::move(_ab); }
यह थोड़ा साधारण मापदंडों के लिए अलग काम करती है, हालांकि, इस उदाहरण में, पहली अधिभार एक rvalue स्वीकार करेंगे, तो दूसरी अधिभार हटा दिया गया है ।
संबंधित/डुप्लिकेट: http://stackoverflow.com/q/21861148/420683 – dyp