3.8 KiB
title | localeTitle |
---|---|
The Auto Feature | الميزة التلقائية |
الميزة التلقائية
auto
هي ميزة C ++ 11 تتيح للمبرمج إمكانية استنتاج نوع البيانات في تعريف. هذا يمكن أن يوفر لك الكثير من الكتابة ، وخاصة مع أنواع معقدة.
بدون auto
:
double x = 10.425; double y = x * x;
مع auto
:
double x = 10.425; auto y = x * x;
في حين أنه قد يبدو تافهاً ، فإنه يصبح مفيداً بشكل لا يصدق عندما تبدأ أنواع البيانات في التعقيد. على سبيل المثال ، افترض أنك تريد تخزين vector
من الموظفين ، وأنك مهتم فقط باسمهم وعمرهم. إحدى الطرق لتخزين الاسم والعمر يمكن أن تكون pair
string
وأخرى unsigned int
. يتم std::vector<std::pair<std::string, unsigned int>> employees
كـ std::vector<std::pair<std::string, unsigned int>> employees
. الآن لنفترض أنك تريد الوصول إلى آخر موظف تمت إضافته:
`std::vector<std::pair<std::string, unsigned int>> employees;
// without auto, you have to write: std::pair<std::string, unsigned int>> last_employee = employees.back();
// with auto, you just have to write: auto last_employee = employees.back(); `
بمجرد تحديد المحول البرمجي للنوع على الجانب الأيمن من =
يستبدل auto
بهذا النوع.
في الإصدارات الحديثة من C ++ (منذ C ++ 14)، auto
يمكن أن تستخدم أيضا في تعريف الدالة كنوع العودة. سوف يقوم المترجم بعد ذلك باستنتاج نوع الإرجاع من بيان الإرجاع داخل الدالة. على سبيل المثال مع الموظفين:
std::vector<std::pair<std::string, unsigned int>> employees; auto get_last_employee() { return employees.back(); // Compiler knows the return type from this line. }
سيعرف المحول البرمجي من السطر مع العبارة الإرجاع أنه يجب أن يكون نوع الإرجاع من الدالة std::vector<std::pair<std::string, unsigned int>>
.
على الرغم من كونها تقنية للغاية ، إلا أن صفحة cppreference على السيارات تصف الكثير من الاستخدامات auto
وتفاصيل متى يمكن استخدامها أو لا يمكن استخدامها.
auto
قبل C ++ 11
في بعض الكتب المدرسية القديمة التي تحتوي على شفرة قديمة جدًا ، يتم استخدام الكلمة الرئيسية auto
بطريقة مختلفة تمامًا.
كانت هذه auto
المحددة عبارة عن كلمة رئيسية مستعارة من C ، وربما كانت الكلمة الرئيسية الأقل استخدامًا على الإطلاق.
في C ++ ، تحتوي كل المتغيرات على مدة تلقائية ، أي أنها محددة حتى تخرج من الوظيفة التي تم تعريفها بها.
فمثلا:
`` `حزب الشعب الكمبودي
تتضمن
انت مين() { كثافة العمليات أ = 1 ؛ // المنطقي ، كما تم تعريفه في نفس الوظيفة
return 0;
} أ = 2 ؛ // لا معنى له ، حيث لا يتم تعريف هنا `` `
هذا معطى في C ++ ، وحدد auto
أن المتغير يجب أن يكون له مدة تلقائية ، وبالتالي عدم الاستخدام.