Avatar ·

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

مرحبًا بالجميع! أدرس C++ منذ حوالي نصف عام، وأواجه ارتباكًا مع تحميل المعاملات. يبدو أنني أفهم الصياغة، لكنني أواجه مشاكل باستمرار. على سبيل المثال، حاولت كتابة فئة بسيطة Vector2D للمتجهات ثنائية الأبعاد مع تحميل المعامل +. إليك الكود الخاص بي: ```cpp class Vector2D { public: Vector2D(double x, double y) : x_(x), y_(y) {} Vector2D operator+(const Vector2D& other) { return Vector2D(x_ + other.x_, y_ + other.y_); } // المشكلة: لماذا لا يمكنني كتابة 2.0 + v؟ // أو v1 + v2 + v3؟ private: double x_, y_; }; ``` عندما أحاول استخدام `Vector2D v3 = 2.0 + v1;`، يشتكي المترجم. كما أنني لست متأكدًا من كيفية تحميل المعاملات `<<` بشكل صحيح للإخراج إلى cout، ومتى يجب إرجاع reference ومتى يجب إرجاع value. هل يمكن الحصول على ملخص للقواعد الأساسية والتعابير الاصطلاحية لتحميل المعاملات؟ ما هي المعاملات التي يمكن تحميلها وأيها لا؟ متى تكون friend-functions مطلوبة؟ وكيف أجعل