Avatar ·

ما هو حذف النسخ (copy elision) وتحسين قيمة الإرجاع (RVO) في C++؟

مرحباً بالجميع! أنا أدرس C++ وقد صادفت المصطلحين "copy elision" و "return value optimization" (RVO). بصراحة، لا أفهم تماماً ما هما وما الغرض منهما. لدي class بسيط يقوم بشيء ما في الـ constructor والـ destructor: ```cpp #include class MyClass { public: MyClass() { std::cout << "Constructor\n"; } MyClass(const MyClass&) { std::cout << "Copy constructor\n"; } ~MyClass() { std::cout << "Destructor\n"; } }; MyClass createObject() { MyClass obj; return obj; // هل يحدث نسخ هنا؟ } int main() { MyClass result = createObject(); return 0; } ``` عندما أقوم بتشغيل هذا الكود، أتوقع رؤية: "Constructor"، ثم "Copy constructor" (عند الإرجاع من الدالة)، ثم مرة أخرى "Copy constr