मैं नए फ़ंक्शन std :: move() के बारे में थोड़ा उत्सुक हूं जिसे अभी नवीनतम सी ++ मानक में जोड़ा गया है।टाइप कास्टिंग और std :: move() का उपयोग करने के बीच अंतर?
इसके बारे में एक लेख पढ़ रहा समाप्त हो गया और पता चला कि समारोह की परिभाषा
namespace std {
template <class T>
inline typename remove_reference<T>::type&& move(T&& x)
{
return x;
}
}
है यह लगता है जैसे कि यह std :: चाल बुला और कास्टिंग का उपयोग कर के बीच कोई अंतर नहीं है।
उदाहरण यहाँ के लिए,
class NPC{
int m_number1;
int m_number2;
public:
NPC() : m_number1(1), m_number2(2) {
cout << "NPC Constructor called!" << endl;
}
NPC(NPC&& _npc) : m_number1(_npc.m_number1), m_number2(_npc.m_number2) {
_npc.m_number1 = 0;
_npc.m_number2 = 0;
cout << "NPC Move Constructor called!" << endl;
}
};
int main() {
NPC n1;
NPC n2 = std::move(n1);
cout << "----------------" << endl;
NPC n3;
NPC n4 = (NPC&&)n3;
return 0;
}
यह सही सोचने के लिए मूल रूप से कोई अंतर नहीं है वहाँ है? ठीक है, मुझे पूरा यकीन है कि मैं सही हूं लेकिन यह भी जानता हूं कि हमेशा आत्मविश्वास होने पर हमेशा पीछे हटना पड़ता है।
अग्रिम धन्यवाद!
धन्यवाद! यह मुझे बहुत मदद करता है! –