Avatar ·

ما هو std::move() ومتى يجب استخدامه في C++؟

مرحبًا أيها الزملاء! لقد بدأت مؤخرًا في تعلم C++11 وصادفت std::move(). قرأت التوثيق لكنني لم أفهم تمامًا ما هو هذا الشيء وما فائدته. لدي هذا الكود: ```cpp #include #include #include class MyClass { public: std::string data; MyClass(const std::string& str) : data(str) {} }; int main() { std::vector vec; std::string bigString = "سلسلة طويلة جدًا تستهلك الكثير من الذاكرة..."; // الخيار 1: مجرد إضافة MyClass obj1(bigString); vec.push_back(obj1); // الخيار 2: استخدام std::move MyClass obj2(bigString); vec.push_back(std::move(obj2)); return 0; } ``` أفهم أن std::move() مرتبط بطريقة ما بالنقل وليس النسخ. لكن ما الفرق؟ متى يجب استخدام std::move() ومتى يجب تجنبه؟ وماذا يحدث للكائن الأصلي بعد النقل؟ اشرحوا لي، من فضلكم، بأمثلة بسيطة كيف يعمل هذا الأمر.