यह व्यर्थ होगा। आप इस कार्य को फ़ंक्शन में बदल देंगे, और परिवर्तन तुरंत खो जाएगा क्योंकि वास्तव में यह चीज़ अस्थायी थी।
नए प्रकार का कारण यह तय करने में सक्षम होना चाहिए कि वास्तव में एक रावल्यू क्या है और क्या नहीं। केवल तभी आप उन्हें उपयोग की जाने वाली अच्छी चीजों के लिए उपयोग कर सकते हैं।
string toupper(string && s) { // for nonconst rvalues
for(char &c : s) make_uppercase(c);
return move(s); // move s into a returned string object
}
string toupper(string const& s) { // for the rest
// calls the rvalue reference version, by passing
// an rvalue copy.
return toupper(string(s));
}
अब, अगर आप कुछ rvalue है और यह toupper के पास, rvalue सीधे, संशोधित किया जा सकता है क्योंकि हम जानते हैं अस्थायी वैसे भी एक थ्रो-दूर की बात है, तो हम सिर्फ रूप में अच्छी तरह कर सकते हैं यह और डॉन बदल ' इसे कॉपी करने की जरूरत नहीं है। साथ ही, वही अवलोकन का उपयोग मूव-कन्स्ट्रक्टर और मूव-असाइनमेंट नामक चीज़ के लिए किया जाता है। दाईं ओर की तरफ कॉपी नहीं किया गया है, लेकिन इसकी चीजें अभी चुराई गई हैं और *this
पर चली गई हैं।
यदि आप कहें कि रावल गैर-कॉन्स लैवल्यू संदर्भों से जुड़ सकते हैं, तो आपके पास यह पता लगाने का कोई तरीका नहीं होगा कि क्या अंत में एक लवल्यू (नामित ऑब्जेक्ट) या एक रावल्यू (अस्थायी) संदर्भ है।
यह शायद अधिक छोटे से पता है, लेकिन वैसे भी उपयोगी है, आप एक सदस्य समारोह पर lvalue या rvalue रेफरी-क्वालिफायर डाल सकते हैं। यहाँ एक उदाहरण है, जो स्वाभाविक रूप से निहित वस्तु पैरामीटर के लिए rvalue संदर्भ की मौजूदा अर्थ विज्ञान फैली हुई है:
struct string {
string& operator=(string const& other) & { /* ... */ }
};
अब, आप अब और नहीं कह सकता
string() = "hello";
कौन सा भ्रामक है और वास्तव में नहीं बना है ज्यादातर समय समझ में आता है। ऊपर &
क्या कह रहा है कि असाइनमेंट ऑपरेटर केवल लालच पर ही लगाया जा सकता है। &&
डालकर, रावल के लिए भी किया जा सकता है।
स्रोत
2009-05-09 22:58:52
मुझे आश्चर्य है कि इसे 3 अप वोट क्यों मिले लेकिन 7 पसंदीदा। मुझे नहीं लगता कि मैंने कभी इसे वोट किए बिना एक प्रश्न का पक्ष लिया है (जब तक कि मैं वोट से बाहर नहीं था या इसे बंद कर दिया गया था)। – Zifre
मुझे आश्चर्य है कि क्यों कोई किसी तरह से सोचता है और फिर वह उम्मीद करता है कि अन्य सभी ठीक वही करेंगे जो वह करता है। – user534498
मुझे आश्चर्य है कि क्यों "अच्छा होना और अपवित्र देना" एक अनुचित उम्मीद है। –