मैं another question में पढ़ा है कि यह :: प्रारंभकर्ता सूची में प्रत्येक सदस्य के लिए कदम है क्योंकि अगर सदस्य किसी अन्य वस्तु तो होना करने के लिए है कि वस्तुओं निर्माता को स्थानांतरित होता है एसटीडी अच्छा अभ्यास है जब एक कदम निर्माता को लागू करने बुलाया जाएगा। इसलिए जैसा ...std :: चाल असाइनमेंट ऑपरेटर के अंदर कदम
//Move constructor
Car::Car(Car && obj)
:
prBufferLength(std::move(obj.prBufferLength)),
prBuffer(std::move(obj.prBuffer))
{
obj.prBuffer = nullptr;
obj.prBufferLength = 0;
}
हालांकि सभी नमूना चाल काम ऑपरेटरों मैंने देखा है में
, वहाँ std :: एक ही कारण के लिए कदम का उपयोग करने का कोई जिक्र नहीं किया गया है। यदि सदस्य एक वस्तु है तो std :: move का उपयोग किया जाना चाहिए? इसलिए जैसा ...
//Move assignment
Car Car::operator=(Car && obj)
{
delete[] prBuffer;
prBufferLength = std::move(obj.prBufferLength);
prBuffer = std::move(obj.prBuffer);
obj.prBuffer = nullptr;
obj.prBufferLength = 0;
return *this;
}
अद्यतन:
मैं सराहना उदाहरण मैं चुना है में std :: चाल का उपयोग करने की आवश्यकता नहीं है (खराब) लेकिन मैं सदस्यों यदि में दिलचस्पी रखता हूँ वस्तुएं थीं
मुझे इस बिंदु पर कुछ स्पष्टीकरण में निश्चित रूप से रूचि है। – goji
'मैंने एक और प्रश्न में पढ़ा', क्या आप उस सवाल को जोड़ सकते हैं? आपके उदाहरण में 'std :: move' का उपयोग करने का कोई कारण नहीं है। –
@JesseGood संपादित देखें, धन्यवाद – TomP89