ما هو 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() ومتى يجب تجنبه؟ وماذا يحدث للكائن الأصلي بعد النقل؟ اشرحوا لي، من فضلكم، بأمثلة بسيطة كيف يعمل هذا الأمر.