Avatar ·

ما الفرق بين typedef و using في C++؟ أيهما تختار؟

مرحبًا بالجميع! أنا أتعلم C++ وقد صادفت طريقتين لإنشاء أسماء مستعارة للأنواع: الطريقة القديمة `typedef` والطريقة الجديدة `using` من C++11. يبدو أنهما يفعلان نفس الشيء، لكنني سمعت أن `using` أصبحت مفضلة. هل يمكنكم شرح الفرق الجوهري؟ إليك مثال بسيط مع `typedef`: ```cpp typedef unsigned long ulong; typedef int (*func_ptr)(double, char); typedef std::vector int_vector; ``` ونفس الشيء مع `using`: ```cpp using ulong = unsigned long; using func_ptr = int(*)(double, char); using int_vector = std::vector; ``` من ناحية الصياغة، تبدو `typedef` أكثر تعقيدًا بالنسبة لي، خاصةً مع المؤشرات للدوال. لكن هل هناك اختلافات وظيفية؟ على سبيل المثال، سمعت أن `using` تعمل مع القوالب (templates) بينما `typedef` لا. هل يمكنكم تقديم أمثلة على متى تكون `using` أفضل، وهل يجب استخدام `typedef` في الكود الجديد؟ شكرًا مقدمًا! <<>>

الفرق الرئيسي: الأسماء المستعارة القالبية

الفرق الرئيسي والأكثر جوهرية