متغيرات ومعاملات const
احمِ البيانات من التغيير
متغيرات ومعاملات const درس مجاني في C++ Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C++ Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C++ Academy 4 دروس في المجموع.
تعريف المتغيرات من النوع const
لا يمكن تعديل متغير من النوع const بعد تهيئته. يفرض المصرّف ذلك، فيكتشف عمليات الكتابة غير المقصودة.
#include <iostream>
int main() {
const int maxUsers = 100;
// maxUsers = 200; // ERROR
std::cout << maxUsers << "\n";
}معاملات الدوال من النوع const
يمنع تعليم معامل يُمرَّر بالقيمة باستخدام const جسمَ الدالة من تعديل نسخته المحلية — وهذا يساعد على توثيق القصد وتعزيز الأمان.
#include <iostream>
int doubled(const int n) {
// n = 0; // ERROR
return n * 2;
}
int main() { std::cout << doubled(21) << "\n"; }معاملات المراجع من النوع const
يؤدي التمرير باستخدام const& إلى تجنّب نسخ الكائنات الكبيرة، مع ضمان عدم تعديلها — وهذه هي الطريقة القياسية لتمرير السلاسل النصية والحاويات.
#include <iostream>
#include <string>
void printLen(const std::string& s) { // no copy, no change
std::cout << s.size() << "\n";
}
int main() { printLen("hello"); }مؤشر إلى const
يعني const T* أنه لا يمكنك تغيير القيمة التي يشير إليها المؤشر من خلاله، مع إمكانية تغيير موضع المؤشر نفسه.
#include <iostream>
int main() {
int a = 1, b = 2;
const int* p = &a;
// *p = 5; // ERROR: value is const
p = &b; // OK: pointer can move
std::cout << *p << "\n";
}مؤشر const
يمثل T* const مؤشرًا ثابتًا: لا يمكنك تغيير موضعه، لكن يمكنك تعديل القيمة التي يشير إليها.
#include <iostream>
int main() {
int a = 1;
int* const p = &a;
*p = 9; // OK: value changeable
// p = nullptr; // ERROR: pointer is const
std::cout << *p << "\n";
}قراءة التصريحات من اليمين إلى اليسار
اقرأ تصريحات const من اليمين إلى اليسار: const int* const يعني «مؤشرًا ثابتًا إلى int ثابت» — فلا يمكن تغيير القيمة ولا المؤشر.
لماذا تُعدّ الصوابية مع const مهمة؟
يوثّق استخدام const حيثما ينطبق القصد، ويمنع الأخطاء، ويتيح للمصرّف إجراء تحسينات. وتُسمّى هذه الممارسة الصوابية مع const.
يتيح const استدعاءات const
يمكن لدالة تستقبل const& قبول الوسائط الثابتة وغير الثابتة، وكذلك المؤقتة. أما المرجع غير الثابت فلا يمكن ربطه بكائن مؤقت.
يساعد const في المتغيرات المحلية على الاستيعاب
يجعل تعريف المتغيرات المحلية باستخدام const عندما لا ينبغي تغييرها الشيفرةَ أسهل قراءة، ويمنع إعادة إسنادها عن طريق الخطأ.
#include <iostream>
int main() {
const double rate = 0.2;
const double total = 100 * (1 + rate);
std::cout << total << "\n";
}const على المستوى الأعلى للقيم
بالنسبة إلى المعاملات التي تُمرَّر بالقيمة، لا يؤثر const على المستوى الأعلى في المستدعي — فهو يقيّد جسم الدالة فقط، وغالبًا ما يُحذف من التصريحات.
أضف const مبكرًا
من الأسهل بكثير البدء بشيفرة صحيحة من ناحية const بدلًا من إضافة ذلك إليها لاحقًا. اجعل تطبيق const على المعاملات والمراجع والمتغيرات المحلية عادةً افتراضية.
تحقق سريع
اختبر مدى فهمك لـ const.
مراجعة
تعلّمت استخدام const مع المتغيرات والمعاملات والمراجع والمؤشرات، والفرق بين المؤشر إلى const ومؤشر const. توثّق الصوابية مع const القصد، وتمنع الأخطاء، وتتيح الربط بالكائنات المؤقتة وإجراء التحسينات.
الأسئلة الشائعة
هل درس «متغيرات ومعاملات const» مجاني؟
نعم — نص درس «متغيرات ومعاملات const» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C++ Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C++ Academy 4 دروس في المجموع.
ماذا ستتعلم في «متغيرات ومعاملات const»؟
احمِ البيانات من التغيير تتمرن على C++ Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ C++ Academy؟
لا تُشترط خبرة سابقة. C++ Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «متغيرات ومعاملات const»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس C++ Academy هذا؟
نعم. كل درس في C++ Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- متغيرات ومعاملات const
- دوال أعضاء const
- constexpr ووقت الترجمة
- consteval وconstinit