|
: Shablon funksiyalar yaratish va ulardan foydalanish
|
bet | 3/4 | Sana | 21.12.2023 | Hajmi | 106,51 Kb. | | #125890 |
Bog'liq DASTURLASH 53: Shablon funksiyalar yaratish va ulardan foydalanish.
C++ da umumiy turlardan foydalangan holda shablon funksiyalar va sinflar yaratish mumkin. Shablon funksiyalar va sinflar ko’plab turli ma’lumot turlari bilan ishlay oladi.
C++ da umumiy tur uchun dasturlash mumkin. Misol uchun, umumiy turdagi ikki sondan kattasini aniqlovchi funksiya yaratdingiz. Agar siz funksiyani int argumentlar uchun chaqirishingiz kerak bo’lsa, u holda umumiy tur int turi bilan almashitriladi. Agar siz funksiyani ikki double argumentlar uchun chaqirmoqchi bo’lsangiz, u holda umumiy tur double turi bilan almashtiriladi.
Shablonlar asoslari
Shablonlar sinflar va funksiyalarda turlarni parametrlashtirish imkoniin beradi. Siz funksiyalar va sinflarni umumiy tur bilan aniqlay olasiz. Keyinchalik ular kompilyator tomonidan aniq bir tur bilan ishlatiladi.
Shablon tushunchasini yoritib beradigan misol qaraymiz. Tasavvur qiling, ikkita butun, ikkita haqiqiy, ikkita belgi va ikki satrlardan kattasini aniqlash kerak. Buning uchun quyidagicha qayta yuklangan 4 ta funksiya yozilishi kerak:
Shablonlar asoslari
Yuqoridagi 4 funksiya deyarli bir xil, farqi faqat turlarida. Birinchi funksiyada int, ikkinchisida double, uchinchisida char va to’rtinchisida string turlaridan foydalanilmoqda. Agar funksiya quyidagicha umumiy tur orqali yaratilsa, u holda turlar soni ko’p bo’lib ketmaydi va dastur kodi ham uzun bo’lib ketmaydi:
Bu yerda GenericType int, double, char va string turlaridan biri bo’la oladi.
Listing 12.1 GenericMaxValue.cpp
Natija
Ogohlantirish!
Umumiy maxValue funksiyasi ixtiyoriy tur uchun ishlaydi, faqat quyidagi shart ta’minlaanishi lozim:
• Ikkita qiymat ham bir xil turda bo’lishi shart
• Ikki qiymat > operatori yordamida taqqoslanaishi lozim
Maslahat
Shablonlardan foydalanish uchun yoki sintaksislaridan foydalanish mumkin. ko’rinishidan foydalanish maqsadga muvofiq, sababi dan foydalanishda sinf aniqlanishi bilan adashtirib qo’yish ehtimoli bor.
Eslatma!
Shablon funksiyada birdan ortiq parametrlar bo’lishi mumkin. Bu holatda, parametrlar qavs ichida vergul bilan ajratilib yoziladi:
.
Listing 12.2 GNVPassByReference.cpp
Natija
Misol: Umumiy saralash
Bu listingda double turidagi massivni tanlash usuli orqali saralash qaralgan.
Listing 12.3 GenericSort.cpp
Natija
Sinf shablonlari
Siz sinf uchun umumiy turlarni aniqlashingiz mumkin.
Sinf qayerda tur sifatida paydo bo’lsa, o’sha yerda parametrlar turlaridan foydalanish mumkin.
|
| |