funksiya shablonlari

PPTX 44 стр. 1,5 МБ Бесплатная загрузка

Предварительный просмотр (5 стр.)

Прокрутите вниз 👇
1 / 44
презентация powerpoint 10-ma’ruza. oydda obyektlarni parametrlash funksiya shablonlari. funksiyalar va sinflar samarali dasturlash uchun kuchli va moslashuvchan vositalar bo'lsa-da, ba'zi hollarda ular ishlatiladigan barcha parametrlarning turlarini belgilash uchun c ++ talabi bilan cheklanadi. masalan, ikkita sonning eng kattasini hisoblash uchun funksiya yozishimiz kerak deylik: int max1(int a, int b) { return (a > b) ? a : b; } agar biz butun sonlar bilan ishlasak, hammasi yaxshi. ammo biz ham haqiqiy qiymatlar bilan ishlashimiz kerak bo'lsa-chi? ehtimol, siz double turi bilan ishlash uchun max1() funksiyasini qayta ishlashga qaror qildingiz: double max1(double a, double b) { return (a > b) ? a : b; } endi bizda bir xil funksiyaning ikkita versiyasi mavjud bo'lib, ular char, int, double va if operatorini qayta yuklasak, hatto sinflar bilan ham ishlaydi! biroq, c++ bizdan o'zgaruvchilarning turlarini ko'rsatishni talab qilganligi sababli, biz bir xil funksiyaning bir nechta versiyasini yozishimiz kerak, bu yerda faqat parametrlar turi …
2 / 44
. shablon parametr turiga ega funksiyani yaratganimizdan so'ng, biz aslida "funksiya trafaretini" yaratdik. funksiya shablonini chaqirganda, kompilyator funksiya uchun shablon sifatida "trafaret" dan foydalanadi, shablon parametri turini funksiyaga o'tkazilgan o'zgaruvchilarning haqiqiy turi bilan almashtiradi! shunday qilib, biz faqat bitta shablon yordamida funksiyaning 50 ta "soyasini" yaratishimiz mumkin! funksiya shablonlarini yaratish. hozircha siz c++ da funksiya shablonlari qanday yaratilganiga qiziqayotgandirsiz. bu unchalik qiyin emasligi ma'lum bo'ldi. max1() funksiyasining butun son versiyasini yana bir bor ko'rib chiqing: int max1(int a, int b) { return (a > b) ? a : b; } bu yerda biz ma'lumotlar turini uch marta aniqlaymiz: a, b parametrlarida va funksiya ning qaytish turida. bu funksiya uchun shablon yaratish uchun int turini funksiya shablon parametri turiga almashtirishimiz kerak. bu holda faqat bitta ma'lumot turi (int) ishlatilganligi sababli, biz shablon parametrining faqat bitta turini ko'rsatishimiz kerak. biz bu turni xohlagancha nomlashimiz mumkin, agar u zaxiralangan / kalit so'z bo'lmasa. …
3 / 44
lon parametrlarini e'lon qilishimizni aytadi. - funksiya shablonining parametrlari burchakli qavslarda (<>) ko'rsatilgan. - typename va class kalit so'zlari shablon parametr turlarini yaratish uchun ishlatiladi. funksiya shablonlari uchun asosiy foydalanish holatlarida tip nomi va sinf o'rtasida farq yo'q, shuning uchun ikkalasidan birini tanlashingiz mumkin. agar siz class kalit so'zidan foydalansangiz, u holda parametrlarning haqiqiy turi sinf bo'lishi shart emas (bu asosiy ma'lumotlar turining o'zgaruvchisi, ko'rsatgich yoki boshqa narsa bo'lishi mumkin). - keyin shablon parametrining turini nomlaymiz (odatda t). agar shablon parametrlarining bir nechta turlari kerak bo'lsa, ular vergul bilan ajratiladi: template // funksiya shabloni bu yerda agar bir nechta parametrlar mavjud bo'lsa, ular odatda t1, t2 yoki boshqa harflar deb ataladi: t, s. eslatma: t turiga o'tkaziladigan funksiya argumentining turi sinf bo'lishi mumkinligi sababli va sinflar odatda qiymat bo'yicha o'tkazilishi tavsiya etilmaganligi sababli, bizning funksiya shablonimiz parametrlari va qaytish qiymatini doimiy havolalar qilish yaxshiroqdir, masalan: template const t& max1(const t& …
4 / 44
asiz (muntazam funksiyaning bitta versiyasi). funksiya shablonlari kodingizni qo'shimcha saqlashni ancha osonlashtiradi va ular xavfsizroqdir, chunki siz yangi ma'lumotlar turini qo'llab-quvvatlashingiz kerak bo'lganda funksiyani qo'lda ortiqcha yuklashingiz, kodni nusxalashingiz va faqat ma'lumotlar turlarini o'zgartirishingiz shart emas. funksiya shablonlari bir nechta kamchiliklarga ega va agar ular haqida gapirmasak, kechirilmas bo'lar edi: - birinchidan, ba'zi eski kompilyatorlar funksiya shablonlarini yoki qo'llab-quvvatlamasligi mumkin, lekin cheklovlar bilan. biroq, bu endi avvalgidek muammo emas. - ikkinchidan, funksiya shablonlari ko'pincha aqldan ozgan xato xabarlarini ishlab chiqaradi, bu oddiy funksiya xatolaridan ko'ra shifrlash qiyinroq. - uchinchidan, funksiya shablonlari kompilyatsiya vaqtini va kod hajmini oshirishi mumkin, chunki bitta shablonni bir nechta fayllarda “amalga oshirish” va qayta kompilyatsiya qilish mumkin. funksiya shablonlarining kuchi va moslashuvchanligi bilan solishtirganda, bu kamchiliklar juda kichikdir! eslatma: c++ standart kutubxonasi o'z arsenalida max1() funksiya shabloniga ega (algoritm sarlavhasi faylida topilgan), shuning uchun kelajakda ushbu funksiya ni qo'lda amalga oshirish kerak bo'lmasligi mumkin. bunga qo'shimcha …
5 / 44
eb ataladi. keling, buni amalda ko'rib chiqaylik. birinchidan, funksiya shablonini yaratamiz: template // funksiya shablonining parametr deklaratsiyasi const t& max(const t& a, const t& b) { return (a > b) ? a : b; } keyin biz funksiya shablonini chaqiramiz: int i = max (4, 8); // max (int, int) chaqiriladi kompilyator ikkala raqam ham butun son ekanligini ko'radi, shuning uchun u funksiya shablonini ko'chiradi va max(int, int) shablonini yaratadi: const int& max(const int &a, const int &b) { return (a > b) ? a : b; } bu endi "oddiy funksiya”. aytaylik, biz max() funksiyasini qayta chaqirishimiz kerak, lekin boshqa ma'lumotlar turi bilan: double d = max(7.58, 19.378); // max(double, double) chaqiriladi c ++ tili avtomatik ravishda shablonning max (double, double) nusxasini yaratadi: const double& max(const double &a, const double &b) { return (a > b) ? a : b; } va keyin uni kompilyatsiya qiladi. shuni ham ta'kidlash …

Хотите читать дальше?

Скачайте все 44 страниц бесплатно через Telegram.

Скачать полный файл

О "funksiya shablonlari"

презентация powerpoint 10-ma’ruza. oydda obyektlarni parametrlash funksiya shablonlari. funksiyalar va sinflar samarali dasturlash uchun kuchli va moslashuvchan vositalar bo'lsa-da, ba'zi hollarda ular ishlatiladigan barcha parametrlarning turlarini belgilash uchun c ++ talabi bilan cheklanadi. masalan, ikkita sonning eng kattasini hisoblash uchun funksiya yozishimiz kerak deylik: int max1(int a, int b) { return (a > b) ? a : b; } agar biz butun sonlar bilan ishlasak, hammasi yaxshi. ammo biz ham haqiqiy qiymatlar bilan ishlashimiz kerak bo'lsa-chi? ehtimol, siz double turi bilan ishlash uchun max1() funksiyasini qayta ishlashga qaror qildingiz: double max1(double a, double b) { return (a > b) ? a : b; } endi bizda bir xil funksiyaning ikkita versiyasi mavjud bo'lib, ular char, int, double...

Этот файл содержит 44 стр. в формате PPTX (1,5 МБ). Чтобы скачать "funksiya shablonlari", нажмите кнопку Telegram слева.

Теги: funksiya shablonlari PPTX 44 стр. Бесплатная загрузка Telegram