المتغيرات والاستدلال التلقائي على النوع وconstexpr
صرّح بالمتغيرات، واستخدم auto لاستنتاج النوع، وتعلّم متى تضع constexpr للقيم
المتغيرات والاستدلال التلقائي على النوع وconstexpr درس مجاني في C++ Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C++ Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C++ Academy 4 دروس في المجموع.
ما المتغير؟
المتغير منطقة مسماة في الذاكرة لها نوع. يحدد النوع عدد البايتات التي تشغلها وكيفية تفسير البتات.
التصريح باستخدام أنواع صريحة
الصيغة التقليدية: type name = value;
int age = 30;
double pi = 3.14159;
char grade = 'A';
bool isReady = true;الكلمة المفتاحية auto
منذ C++11، يستطيع المترجم استنتاج النوع من قيمة التهيئة. استخدم auto لكتابة تعليمات أوضح، خصوصًا مع المكررات أو القوالب.
auto count = 42; // int
auto price = 9.99; // double
auto name = std::string("Ada"); // std::stringمتى يفيد auto
استخدم auto عندما:
- يكون النوع طويلًا (مثل المكررات والقوالب)
- تريد تجنب التحويلات الضمنية
- يتبع النوع مباشرةً من قيمة التهيئة
متى تتجنب auto
تجنّب auto عندما لا يكون النوع المستنتج واضحًا للقارئ. بالنسبة إلى القيم الحرفية العددية، غالبًا ما يوضّح النوع الصريح القصد بصورة أفضل.
const: متغيرات للقراءة فقط
ضع const للمتغيرات التي يجب ألا تتغير مطلقًا. ويفرض المترجم ذلك.
const int MAX_USERS = 100;
const double TAX_RATE = 0.18;constexpr: ثوابت وقت الترجمة
يتجاوز constexpr ما يقدّمه const — إذ يجب أن تكون القيمة معروفة في وقت الترجمة. ويمكن للمترجم استخدامها حيث تُطلب ثوابت وقت الترجمة.
constexpr int BUFFER_SIZE = 1024;
constexpr double PI = 3.14159265358979;دوال constexpr
يمكن أيضًا وضع constexpr للدوال إذا أمكن حساب كل خطوة في وقت الترجمة. ويؤدي استدعاؤها باستخدام معاملات ثابتة إلى الحصول على نتيجة في وقت الترجمة.
constexpr int square(int x) { return x * x; }
constexpr int area = square(5); // computed at compile timeصيغ التهيئة
تتضمن C++ عدة صيغ نحوية للتهيئة. فضّل التهيئة بالأقواس المعقوفة في الشفرة الحديثة — فهي ترفض التحويلات المضيّقة.
int a = 10; // copy init
int b(10); // direct init
int c{10}; // brace init (preferred)
int d = {10}; // copy-list initالتضييق والتهيئة بالأقواس المعقوفة
تحميك التهيئة بالأقواس المعقوفة من الاقتطاع غير المقصود. يفشل المثال أدناه في الترجمة.
double d = 3.7;
int a = d; // OK, silently truncates to 3
int b{d}; // ERROR: narrowing conversionنطاق المتغير
يوجد المتغير منذ التصريح عنه حتى نهاية الكتلة المحيطة به (زوج من { }). صرّح بالمتغيرات في أضيق نطاق ممكن — فهذا يحدّ من مدة حياتها ويقلل الأخطاء.
تحقق سريع
أي تصريح ينشئ قيمة يستطيع المترجم استخدامها كثابت في وقت الترجمة؟
خلاصة
صرّح بالمتغيرات باستخدام نوع صريح أو باستخدام auto لاستنتاج النوع. استخدم const للقيم للقراءة فقط وconstexpr لثوابت وقت الترجمة. فضّل التهيئة بالأقواس المعقوفة لاكتشاف التحويلات المضيّقة.
الأسئلة الشائعة
هل درس «المتغيرات والاستدلال التلقائي على النوع وconstexpr» مجاني؟
نعم — نص درس «المتغيرات والاستدلال التلقائي على النوع وconstexpr» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C++ Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C++ Academy 4 دروس في المجموع.
ماذا ستتعلم في «المتغيرات والاستدلال التلقائي على النوع وconstexpr»؟
صرّح بالمتغيرات، واستخدم auto لاستنتاج النوع، وتعلّم متى تضع constexpr للقيم تتمرن على C++ Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ C++ Academy؟
لا تُشترط خبرة سابقة. C++ Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «المتغيرات والاستدلال التلقائي على النوع وconstexpr»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس C++ Academy هذا؟
نعم. كل درس في C++ Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- إعداد مترجم C++
- مرحبًا بالعالم وعملية البناء
- المتغيرات والاستدلال التلقائي على النوع وconstexpr
- المعاملات الأساسية والتحويل بين الأنواع