لقد تعلمنا للتو عن التحميل الزائد للوظائف ، والذي يمكنه التعامل مع أنواع بيانات متعددة، على الرغم من أنها تحمل نفس الاسم، إلا أنها لا تزال بحاجة إلى تعريفها بشكل منفصل. ولتحقيق هذه الغاية، يوفر C++ آلية قالب الوظيفة، مما يحسن بشكل كبير إمكانية إعادة استخدام التعليمات البرمجية.
يتيح لك قالب الوظيفة إنشاء وظيفة عامة تدعم معلمات رسمية متعددة. استخدم قالب الكلمة الرئيسية لتحديدها بالشكل التالي:
القالب <اسم نوع الفئة 1، اسم نوع الفئة 2...> اسم وظيفة القيمة المرجعة (عمود قائمة المعلمات الرسمية) قائمة معلمات القالب {نص الوظيفة}
للتوضيح، في هذا النموذج العام، القالب الموجود في السطر الأول <اسم نوع الفئة 1، اسم نوع الفئة 2...> عبارة عن قالب إعلان ، وهو الكلمة الأساسية التي تحدد وظيفة القالب الأقواس الزاوية السابقة هي فئة الاستخدام (أو اسم الكتابة للتعريف). ثم اتبعه بقالب الوظيفة المحددة. تذكر عدم إضافة عبارات أخرى في المنتصف، وإلا سيتم الإبلاغ عن خطأ!
أدناه، دعونا نلقي نظرة على مثال محدد!
#include<iostream>usingnamespacestd;template<classT1,classT2>T1add(T1x,T2y){cout<<sizeof(T1)<<,<<sizeof(T2)<<t;returnx+y;}intmain(){ cout<<add(10,20)<<endl;;cout<<add(3.14,5.98)<<endl;cout<<add('A',2)<<endl;return0;}
ما ورد أعلاه هو قالب لوظيفة الإضافة. يمكنك أن ترى أننا قمنا بتحديد قالب دالة الإضافة، وتم استبدال أنواع المتغيرات فيه بـ T1 وT2.
في الوظيفة الرئيسية، عندما نسميها فعليًا، نسميها ثلاث مرات، ونمرر ثلاثة أنواع مختلفة. سيتم تغيير نوعي T1 وT2 في وظيفة القالب إلى أنواع محددة وفقًا للنوع الفعلي الذي تم تمريره. يسمى هذا التحويل. مثال على تغيير القالب.
ثم نقوم بتشغيل البرنامج ويمكننا أن نرى ما هي الأنواع T1 و T2 التي يتم استدعاؤها في كل مرة، وعدد البايتات الخاصة بها، ونتيجة الجمع. تأثير التشغيل هو كما يلي:
يمكنك فهم سطر التعليمات البرمجية سطرًا وإكمال التجربة بنفسك.