Reklama

استخدام القوالب في C++

لدينا IntArray فئة يوفر بديلا جيدا المدمج في مجموعة الأعداد الصحيحة. ولكن الحياة يمكن أن تأخذ صفائف مختلف أنواع البيانات. يمكننا أن نفترض, الفرق الوحيد بين عناصر الصفيف من نوع مزدوج من نوع البيانات في الإعلانات, باقي كود يطابق حرفيا.
لحل هذه المشكلة في c + + إليه قوالب. فئة ووظيفة الإعلانات المسموح باستخدام معلمات أنواع. اكتب معلمات يتم استبدال في وقت التحويل البرمجي هذه الأنواع, المدمج في أو معرفة من قبل المستخدم. يمكننا إنشاء قالب الفئة مجموعة, محل في الصف IntArray عناصر من نوع int على نوع عام المعلمة. في وقت لاحق ونحن تحديد أنواع الخيارات, استبدال لهم الأنواع الحقيقية int, مزدوج و سلسلة. النتيجة ستكون طريقة استخدام هذه المواصفات حتى, كما لو أننا في الواقع تحدد ثلاث فئات مختلفة في هذه الثلاثة أنواع البيانات.
الآن يمكن إعادة كتابتها كما فئة القالب مجموعة:

الكلمة قالب يقول, يحدد القالب, معلمات المحاطة بأقواس زاوية (<>). في حالتنا لا يوجد سوى معلمة واحدة elemType; فئة رئيسية أمام اسمه يقول, ما هذا الخيار يمثل نوع.
في تحديد فئات القوالب مجموعة المعلمة elemType يتم استبدال نوع الفعلي لكل استخدام, كما هو موضح في المثال:

يحدد ثلاثة مثيل الفئة مجموعة:

ماذا يفعل المترجم, إذا رأيت هذا الإعلان? يعرض نص قالب مجموعة, استبدال المعلمة elemType نوع, المحددة في كل حالة. ولذلك, الإعلانات أعضاء أصبحت في الحالة الأولى من هذا النوع:

ملاحظة, ما هو بالضبط يتوافق مع تعريف الصفيف IntArray.
من أجل المتبقيتين ، نحصل على التعليمات البرمجية التالية:

ماذا يحدث وظائف الأعضاء? هذا النوع هو المعلمة elemType يتم استبدال نوع الفعلي, غير أن المترجم لا يحدد مهام, التي لا يحتج بها في أي مكان من البرنامج.
عند تشغيل البرنامج هذا المثال سوف يعطي النتيجة التالية:

قالب المحرك يمكن استخدامها في الطبقات الموروثة. هنا هو تعريف فئة القالب ArrayRC:

استبدال المعالم الفعلية بدلا من ذلك نوع-معلمة elemType يحدث في كل قاعدة, و في الفئات المشتقة.

تعريف يتصرف بالضبط نفس, حسب تعريف IntArrayRC من المقطع السابق. تغيير استخدام المثال من المقطع السابق.

أولا, إلى عامل التشغيل // وظيفة مبادلة() كما يجب أن تجعل قالب صالح, سوف تحتاج إلى إدخال الدالة مبادلة() قالب.

كل استدعاء المبادلة() ولدت المناسبة مواصفات, الذي يعتمد على نوع الصفيف. هنا هو البرنامج, باستخدام قوالب مجموعة و ArrayRC:

Reklama