Avatar ·

ما هي إيدومة Copy-and-Swap في C++ ومتى تستخدمها؟

مرحبًا بالجميع! بدأت في تعلم C++ وأحاول فهم كيفية إعادة تعريف operator= بشكل صحيح. أعلم أنني بحاجة إلى التحقق من التعيين الذاتي وتحرير الموارد القديمة، لكن الكود الخاص بي يبدو فظيعًا وأرتكب أخطاء باستمرار. إليك مثال على صفي للعمل مع مصفوفة ديناميكية: ```cpp class MyArray { int* data; size_t size; public: MyArray(size_t s) : size(s), data(new int[s]) {} ~MyArray() { delete[] data; } // مشكلة في operator= MyArray& operator=(const MyArray& other) { if (this != &other) { // التحقق من التعيين الذاتي delete[] data; // تحرير البيانات القديمة size = other.size; data = new int[size]; // تخصيص ذاكرة جديدة std::copy(other.data, other.data + size, data); } return *this; } // copy constructor موجود أيضًا MyArray(const MyArray& other) : size(other.size), data(new int[other.