Avatar ·

القواعد الأساسية والتعابير الاصطلاحية لتحميل المعاملات في C++

مرحباً بالجميع! أنا أتعلم C++ وأحاول فهم تحميل المعاملات. كتبت class بسيط للعمل مع الأعداد المركبة، لكني واجهت الكثير من المشاكل. إليك الكود الخاص بي: ```cpp class Complex { public: double real, imag; Complex(double r, double i) : real(r), imag(i) {} // تحميل المعامل + Complex operator+(Complex other) { return Complex(real + other.real, imag + other.imag); } // تحميل المعامل == bool operator==(Complex other) { return (real == other.real && imag == other.imag); } }; int main() { Complex a(3.0, 4.0); Complex b(1.0, 2.0); Complex c = a + b; // يعمل Complex d = 5.0 + a; // خطأ! لماذا؟ if (c == d) {} // يعمل، لكني سمعت أن هذا غير صحيح return 0; } ``` الأسئلة: 1. لماذا لا يتم ترجمة `5.0 + a`، بينما `a + 5.0` يعمل؟ 2. هل قمت بتحميل `operator+` بشكل صحيح؟ ما هو "تعابير الإرجاع بالقيمة"؟ 3. كيف يتم تحميل `operator==` بشكل صحيح؟