Mavzu: Shablon funksiyalar yaratish va ulardan foydalanish
template< int size > class IntegerArray
Download 29.7 Kb.
|
Sayfiyev Sayfiddin Mustaqil ish dasturlash fanidan 2
template< int size >
class IntegerArray {int Array[ size ]; /* ... */}; shablon< int size > // Shablon prototipi void PrintArray( IntegerArray< size > massiv ) { /* ... */ } // Shablon chaqiruvi // Shablon ob'ektidan foydalanish IntegerArray<20>ia; PrintArray(ia); Shablondan foydalanishni osonlashtirish va yuzaga kelishi mumkin bo'lgan xatolarni oldini olish uchun tilga xulosa chiqarish qoidalari kiritiladi, masalan, belgilar qatorini saralash uchun sort< int > dan foydalanishga urinish. Agar shablon parametrini bir nechta argumentlardan chiqarish mumkin bo'lsa, unda xulosaning natijasi ushbu argumentlarning barchasi uchun aynan bir xil bo'lishi kerak. Masalan, quyidagi qo'ng'iroqlar noto'g'ri: min (0, 'a'); min (7, 7.0); Shablonlardagi xatolar Shablonni ishlatishdan oldin maxsus shablon parametrlaridan foydalanish bilan bog'liq xatolarni aniqlab bo'lmaydi. Masalan, min shablonning o'zi xatosiz, lekin uni '<' operatori aniqlanmagan turlar bilan ishlatish xatolikka olib keladi: struct A { int a; }; A obj1, obj2; min( obj1, obj2 ); Agar shablonni birinchi marta ishlatishdan oldin '<' operatsiyasini kiritsangiz, xatolik yo'qoladi. C++ da shablonlarning moslashuvchanligi shunday namoyon bo'ladi: friend inline bool operator< ( const A& a1, const A& a2 ) { return a1.a < a2.a; } min( obj1, obj2 ); Sinf shablonlar Butun sonlarning bog'langan ro'yxatini amalga oshiradigan sinfda ro'yxatga yangi element qo'shish va kerakli elementni qidirish algoritmlari ro'yxat elementlarining butun son ekanligiga bog'liq emas. Xuddi shu algoritmlar belgilar, satrlar, sanalar, o'yinchilar sinflari va boshqalar ro'yxatiga nisbatan qo'llaniladi. template< class T > class List { /* ... */ public: void Add( const T& Element ); bool Find( const T& Element ); /* ... */ }; Shablonlardan foydalanish Sinf shablonini ishlatish uchun uning parametrlarini ko'rsatishingiz kerak: List List li.Add( 17 ); ls.Add( "Hello!" ); Texnik tafsilotlar Shablon variantlari Shablon parametrlari quyidagilar bo'lishi mumkin: tip parametrlari, oddiy turdagi parametrlar, shablon parametrlari. Har qanday turdagi parametrlar uchun standart qiymatlarni belgilashingiz mumkin. shablon< sinf T1, // parametr turi tip nomi T2, // parametr turi int I, // oddiy turdagi parametr T1 DefaultValue, // oddiy turdagi parametr shablon< sinf > sinf T3, // shablon parametri sinf Belgi = char // standart parametr.. Agar sinf yoki funktsiya shablonida bir xil shablonni ishlatish kerak bo'lsa, lekin har xil parametrlarga ega bo'lsa, shablon parametrlaridan foydalaniladi. Masalan shablon< sinf Turi, shablon< sinf > sinf Konteyner > sinf o'zaro murojaatlari Container Container /* ... */}; CrossReferences< Sana, vektor > cr1; CrossReferences< string, set > cr Funktsiya shablonlarini shablon parametrlari sifatida ishlatib bo'lmaydi. Funksiya shablonlari argumentlarini chiqarish qoidalari Turlar bo'lgan parametrlar uchun (masalan, tartiblash funktsiyasining T parametri), agar funktsiya argumenti quyidagi turlardan birida bo'lsa, xulosa chiqarish mumkin: Download 29.7 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling