Мазмунга өтүү

Функциялардын жана класстардын шаблондору

Сабактын башталышы

Функциялардын жана класстардын шаблондору

Кодду бир жолу жазыңыз, компилятор ар бир тип үчүн версия жаратат

Негизги идея: шаблон - бул код үчүн чийме. int үчүн бир max, double үчүн башка, std::string үчүн дагы бирин жазуунун ордуна, сиз типке караштуу бирдиктүү универсалдуу версия жазасыз. Аны колдонгонуңузда компилятор керектүү конкреттүү функцияны же классты өзү жаратат. Бул C++ тилиндеги жалпыланган программалоонун негизги механизми, жана бүткүл стандарттык шаблон китепканасы (STL) ушуга курулган.
Сабактын аягында сиз төмөнкүлөрдү жасай аласыз:
  • бир же бир нече тип-параметри бар функция шаблондорун жазуу,
  • компиляторго шаблон аргументтерин чыгарууга уруксат берүү же аларды ачык берүү,
  • жалпыланган Pair же Stack сыяктуу класс шаблондорун жазуу,
  • типтик эмес шаблон параметрлерин колдонуу (мисалы, компиляция учурунда белгилүү өлчөм),
  • инстанциялоо деген эмне экенин жана шаблон коду эмне үчүн баш файлдарда жатарын түшүндүрүү.

1. Шаблондор кайсы маселени чечет?

Эки маанинин чоңун кайтарган функция керек деп элестетиңиз. Шаблонсуз сиз ошол эле логиканы ар бир тип үчүн көчүрүп жазасыз:

int    maxOf(int a, int b)       { return (a > b) ? a : b; }
double maxOf(double a, double b) { return (a > b) ? a : b; }
std::string maxOf(std::string a, std::string b) { return (a > b) ? a : b; }

Денелер бирдей, тип гана айырмаланат. Бул кайталоо бузулууга даяр: бир жерде катаны оңдоп, башкаларын унутуп каласыз. Шаблон коддун формасын сүрөттөп, типти кийин толтурула турган бош орун катары калтырууга мүмкүндүк берет.

Салыштыруу: печенье калыбын элестетиңиз. Калып - печенье эмес, форма. Аны камырга (int) басыңыз - «int формасындагы» функция чыгат; башка камырга (std::string) басыңыз - «string формасындагы» функция чыгат. Калып (шаблон) бир жолу жазылат; компилятор талап боюнча конкреттүү печеньелерди (чыныгы функцияларды) басып чыгарат.

Шаблондор толугу менен компиляция учурунда чечилет. Жалпылангандыгы үчүн иштөө учурунда кошумча чыгым жок - ар бир жаралган версия сиз аны кол менен жазгандай эле тез.

Бул сабакты YourAIZone платформасында улантыңыз

Толук сабакта — толук түшүндүрмө, чыгарылган мисалдар, көп кездешкен каталар, заматта текшерилүүчү тесттер жана ЖИ-репетитор. Конок катары дароо баштаңыз же прогрессти сактоо үчүн аккаунт түзүңүз.

Толук сабакта

  • Толук түшүндүрмө
  • Чыгарылган мисалдар
  • Көп кездешкен каталар жана алардан кантип качуу керек
  • Тест суроолору: 15
  • Тема боюнча суроолорго жооп берген ЖИ-репетитор
  • Окуучу, ата-эне жана мугалим үчүн прогрессти көзөмөлдөө