Avatar ·

لماذا يجب استخدام المؤشر بدلاً من الكائن نفسه في C++؟

مرحباً بالجميع! أنا مطور C++ مبتدئ وأواجه غالباً مواقف لا أفهم فيها لماذا يستخدم الكود المؤشرات بدلاً من الكائنات العادية. على سبيل المثال، أكتب كلاساً لإدارة شخصية لعبة: ```cpp class Monster { public: Monster(const std::string& name) : name(name) {} void attack() { /* ... */ } private: std::string name; }; void processMonster(Monster m) { // أمرر الكائن بالقيمة m.attack(); } int main() { Monster goblin("Goblin"); processMonster(goblin); // نسخة! وماذا لو كان الوحش ثقيلاً؟ return 0; } ``` أرى أن العديد من المبرمجين المحترفين يكتبون هكذا: ```cpp void processMonster(Monster* m) { m->attack(); } ``` أو حتى ينشئون الكائنات عبر `new`: ```cpp Monster* boss = new Monster("Boss"); ``` لدي عدة أسئلة: 1. لماذا نحتاج المؤشرات أصلاً، إذا كان يمكننا العمل مع الكائنات مباشرة؟ 2. متى يكون من الأفضل استخدام المؤشر، ومتى استخدام المرجع؟ 3. ما الفرق بين `M