0Pricing
C++ Academy · درس

متى تستخدم المؤشرات مقابل المراجع

اختر بين المؤشرات والمراجع بناءً على قابلية الغياب ودلالات الملكية.

متى تستخدم المؤشرات مقابل المراجع درس مجاني في C++ Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C++ Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C++ Academy 4 دروس في المجموع.

أدوات مختلفة لمهام مختلفة

تتيح لك المراجع والمؤشرات الوصول غير المباشر إلى كائن آخر — لكن بدلالات مختلفة. استخدم كلًا منها حيث تكون أنسب.

المراجع للأهداف الإلزامية

لا يمكن أن يكون المرجع فارغًا ولا يمكن إعادة ربطه. استخدم وسيطًا مرجعيًا عندما تحتاج الدالة دائمًا إلى كائن حقيقي.

void render(const Image& img);   // must have an image

المؤشرات للأهداف الاختيارية

يمكن أن يكون المؤشر فارغًا. استخدم مؤشرًا عندما يكون الوسيط اختياريًا فعلًا.

void render(const Image* img);   // nullptr means "skip"

المؤشرات عند إعادة الإسناد

يمكن توجيه المؤشرات إلى كائنات مختلفة. استخدمها عندما يتغير الوصول غير المباشر أثناء الخوارزمية — مثل مؤشر موضع متحرك أو عقدة حالية.

Node* current = head;
while (current) {
    process(current);
    current = current->next;
}

مراجع ضمن حاويات المراجع؟

لا يمكنك إنشاء std::vector<T&>. استخدم std::vector<std::reference_wrapper<T>> أو خزّن المؤشرات بدلًا من ذلك.

إرجاع المراجع

أعد مرجعًا عندما تستمر نتيجة الدالة بعد انتهاء الاستدعاء، وعندما يستطيع المستدعي استخدامها مباشرةً (مثل الأعضاء وعناصر الحاويات).

std::string& Person::name() { return name_; }

إرجاع المؤشرات

أعد مؤشرًا عندما يمكن للدالة إرجاع "لا نتيجة" أو عندما تكون الملكية غير واضحة. وفي الشيفرة الحديثة، يُفضّل استخدام std::optional أو المؤشرات الذكية.

أعضاء الفئة

يُثبّت تخزين مرجع كعضو الكائن المشار إليه طوال عمر الكائن — ويمنع الإسناد بالنسخ. أما أعضاء المؤشرات فأكثر مرونة، لكنهم يتطلبون التحقق من القيمة الفارغة.

تعدد الأشكال

يمكن استخدام المؤشرات والمراجع مع تعدد الأشكال. خزّن مؤشرات الفئة الأساسية في الحاويات (فلا يمكن للـ vector احتواء مراجع)؛ واستخدم المراجع للوسائط عندما تكون القيمة الفارغة غير صالحة.

المؤشرات الذكية أفضل من المالكة الخام

استخدم المؤشرات الخام فقط للوصول غير المباشر غير المالك. وتكون الملكية من مسؤولية std::unique_ptr أو std::shared_ptr.

دليل سريع لاتخاذ القرار

دليل سريع:

  • كائن صالح دائمًا → مرجع
  • قد يكون غائبًا → مؤشر أو std::optional
  • وصول غير مباشر متحرك → مؤشر
  • يمتلك الذاكرة → مؤشر ذكي
  • داخل حاوية → مؤشر (حاويات المراجع صعبة الاستخدام)

اختبار سريع

ما أفضل نوع وسيط لدالة تتطلب كائنًا غير فارغ؟

مراجعة

استخدم المراجع للأهداف الإلزامية والثابتة، والمؤشرات للأهداف الاختيارية أو المتحركة. وللملكية، يُفضّل استخدام المؤشرات الذكية. تحتاج الحاويات عادةً إلى مؤشرات لا مراجع.

الأسئلة الشائعة

هل درس «متى تستخدم المؤشرات مقابل المراجع» مجاني؟

نعم — نص درس «متى تستخدم المؤشرات مقابل المراجع» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C++ Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C++ Academy 4 دروس في المجموع.

ماذا ستتعلم في «متى تستخدم المؤشرات مقابل المراجع»؟

اختر بين المؤشرات والمراجع بناءً على قابلية الغياب ودلالات الملكية. تتمرن على C++ Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ C++ Academy؟

لا تُشترط خبرة سابقة. C++ Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «متى تستخدم المؤشرات مقابل المراجع»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس C++ Academy هذا؟

نعم. كل درس في C++ Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. المؤشرات الخام ومعامل أخذ العنوان
  2. إلغاء إشارة المؤشر وحساب المؤشرات
  3. ‏nullptr وأمان المؤشرات الفارغة
  4. متى تستخدم المؤشرات مقابل المراجع
← العودة إلى C++ Academy