यह कि इस कदम निर्माता का प्रतीक है और काम समारोह के लिए कदम परोक्ष संकलक
हाँ यह सही है द्वारा परिभाषित नहीं किया जा सकता।
और इसलिए चालन की अनुमति नहीं है।
नहीं है, इस कदम के संचालन अभी भी प्रति निर्माता के माध्यम से प्रदर्शन किया जा सकता है और कॉपी असाइनमेंट ऑपरेटर (हालांकि इस मामले आप की उम्मीद नहीं किया जा सकता है), क्योंकि एक rvalue हमेशा const&
करने के लिए बाध्य किया जा सकता है।
अधिक सटीक, कक्षा copyable
अभी भी MoveConstructible और MoveAssignable है। एक प्रति निर्माता है कि एक स्थिरांक टी & तर्क लेता rvalue भाव बाध्य कर सकते हैं:
एक वर्ग इस प्रकार आवश्यकता को पूरा करने के लिए एक कदम निर्माता को लागू करने की जरूरत नहीं है।
यदि कोई मूव कॉन्स्ट्रक्टेबल क्लास एक चालक कन्स्ट्रक्टर लागू करता है, तो यह इस तथ्य का लाभ उठाने के लिए चाल अर्थशास्त्र को भी कार्यान्वित कर सकता है कि निर्माण के बाद आरवी का मूल्य निर्दिष्ट नहीं है।
और
प्रकार क्रम इस प्रकार आवश्यकता को पूरा करने में कदम असाइनमेंट ऑपरेटर को लागू करने की जरूरत नहीं है: एक प्रति असाइनमेंट ऑपरेटर कि मूल्य द्वारा या एक स्थिरांक प्रकार & के रूप में अपनी पैरामीटर लेता है, बाँध होगा बहस तर्क के लिए।
यदि कोई मूव एसिग्नेबल क्लास एक चाल असाइनमेंट ऑपरेटर लागू करता है, तो यह इस तथ्य का लाभ उठाने के लिए चाल अर्थशास्त्र को भी कार्यान्वित कर सकता है कि असाइनमेंट के बाद आरवी का मान निर्दिष्ट नहीं है।
रूप @Curious कहा, आप इस कदम निर्माता घोषित करने और असाइनमेंट ऑपरेटर delete लिए कदम स्पष्ट रूप से copyable
unmovable बनाने के लिए कर सकते हैं; फिर एक rvalue अभिव्यक्ति के साथ उपयोग delete
एड अधिभार का चयन किया जाएगा और संकलन विफल हो जाएगा।
मूविंग को एक विशेष मामले के रूप में देखा जा सकता है जहां मूल चर को संरक्षित नहीं किया जाना चाहिए। मूल चर (जैसे प्रतिलिपि) को संरक्षित करना इस कदम को अमान्य नहीं करता है। – Bernard
संबंधित/डुप्ली: https://stackoverflow.com/questions/33939644/understanding-stdis-move-constructible – NathanOliver
बर्नार्ड की टिप्पणी में थोड़ा और विवरण जोड़ने के लिए: एक चाल के बाद, स्रोत चर को खाली होने की गारंटी नहीं है। (कुछ वस्तुओं में "खाली" की अवधारणा भी नहीं हो सकती है।) यह * खाली हो सकता है, निश्चित रूप से, या यह अपरिवर्तित हो सकता है, या यह पूरी तरह से कुछ और हो सकता है उदा। अब यह वैल्यू हो सकता है जो पहले लक्ष्य चर (असाइनमेंट के मामले में) में था।Std :: स्ट्रिंग के मामले में, यह अक्सर खाली होता है यदि यह चाल से पहले एक लंबी स्ट्रिंग थी, और यदि यह एक छोटी स्ट्रिंग थी तो अपरिवर्तित। –