मैं रैवल्यू संदर्भ को समझने और अर्थशास्त्र को स्थानांतरित करने की कोशिश कर रहा हूं। निम्नलिखित कोड में, जब मैं प्रिंट फ़ंक्शन पर 10 पास करता हूं तो यह रैवल्यू संदर्भ अधिभार को कॉल करता है, जिसकी अपेक्षा की जाती है। लेकिन वास्तव में क्या होता है, वह 10 कहां कॉपी हो जाएगा (या जहां से इसे संदर्भित किया गया है)। दूसरा, std::move
वास्तव में क्या करता है? क्या यह i
से मान 10 निकालता है और फिर इसे पास करता है? या यह रैल्यू संदर्भ का उपयोग करने के लिए संकलक के लिए निर्देश है?जब हम रैवल्यू संदर्भों का उपयोग करते हैं और std :: move कैसे काम करता है तो वास्तव में क्या होता है?
void Print(int& i)
{
cout<<"L Value reference "<<endl;
}
void Print(int&& i)
{
cout<<"R Value reference "<< endl;
}
int main()
{
int i = 10;
Print(i); //OK, understandable
Print(10); //will 10 is not getting copied? So where it will stored
Print(std::move(i)); //what does move exactly do
return 0;
}
धन्यवाद।
मैं अनुशंसा करता हूं [स्कॉट मेयर्स ने मूल 2013 जाने पर बात करें] (http://channel9.msdn.com/Events/GoingNative/2013/An-Efective-Cpp11-14-Sampler)। वह विवरण में 'std :: move' और' std :: forward' बताते हैं। – danadam