पर निर्माता ले जाएँ, और आधार वस्तु भी अर्थ विज्ञान के लिए कदम है, उचित तरीके से ली गई वस्तु चाल निर्माता से आधार वस्तु चाल निर्माता कॉल करने के लिए क्या है?व्युत्पन्न वस्तु
मैं पहली बार सबसे स्पष्ट बात करने की कोशिश की:
Derived(Derived&& rval) : Base(rval)
{ }
हालांकि, इस आधार वस्तु की प्रतिलिपि निर्माता बुला खत्म करने लगता है। तब मैं स्पष्ट रूप से यहाँ std::move
उपयोग करते हुए, इस तरह की कोशिश की:
Derived(Derived&& rval) : Base(std::move(rval))
{ }
यह काम किया, लेकिन मैं उलझन में हूँ क्यों यह आवश्यक है। मैंने सोचा std::move
केवल एक रैल्यू संदर्भ देता है। लेकिन चूंकि इस उदाहरण में rval
पहले से ही एक रावल्यू संदर्भ है, std::move
पर कॉल अनिवार्य होना चाहिए। लेकिन अगर मैं यहां std::move
का उपयोग नहीं करता हूं, तो यह सिर्फ कॉपी कन्स्ट्रक्टर को कॉल करता है। तो std::move
पर कॉल क्यों आवश्यक है?
यदि आप नियमित लवल्यू (std :: move (xx) का उपयोग नहीं करते हैं) के रूप में एक तर्क इनपुट प्रदान करते हैं तो बस कन्स्ट्रक्टर के बावजूद एक नोट जोड़ने के लिए आपको एक कार्य के लिए Xyy 'lvalue' Xyy && 'में बाध्य नहीं किया जा सकता है foo (Xyy && xyy) के रूप में परिभाषित किया गया है। –