تخطَّ إلى المحتوى

auto

الاستنتاج التلقائي للنوع auto

auto تجعل المترجم يستنتج نوع المتغيّر من قيمته الابتدائية بدل ما تكتبه أنت يدويًا.

auto كلمة مفتاحية أضافها C++11: بدل ما تكتب int أو std::vector<std::string>::iterator بشكل صريح، تكتب auto ويستنتج المترجم النوع من طرف اليمين وقت الترجمة (compile time) — مو runtime، فما في أي بطء بالتنفيذ.

مفيدة جدًا مع الأنواع الطويلة (خصوصًا iterators وlambdas) لكنها تقلّل وضوح الكود لو استخدمتها بمكان النوع فيه غير واضح من السياق.

الصياغة

auto name = expression;

📄 مثال

auto x = 5;              // int
auto price = 19.99;      // double
auto name = std::string("Ali");

for (auto it = v.begin(); it != v.end(); ++it) {
    // it هون نوعه طويل جدًا لو كتبناه يدويًا
}

أهم النقاط

العنصرالوظيفة
auto x = ...استنتاج نوع بسيط من القيمة الابتدائية
const auto&مرجع ثابت — الأشيع مع الحاويات لتفادي نسخ غير ضروري
auto&&مرجع عام (universal reference) يُستخدم غالبًا بالقوالب
decltype(auto)نسخة أدق تحافظ على المرجعية والـ const بدقة أكبر

💡 نصائح عملية

  • استخدمها دائمًا مع iterators وlambdas — توفّر كتابة أنواع طويلة جدًا
  • لو النوع غير واضح من اسم المتغيّر أو السياق، اكتب النوع صراحة بدل auto

⚠️ أخطاء شائعة

  • auto لازم قيمة ابتدائية دائمًا — auto x; وحدها خطأ ترجمة
  • الظن أن auto نوع ديناميكي متل JavaScript — النوع يُحدَّد مرة واحدة وقت الترجمة ولا يتغيّر بعدها

خصائص ذات صلة

🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار CPP الكامل بالعربي.