русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Синтаксис шаблону функції


Дата додавання: 2014-04-22; переглядів: 942.


Основою концепції шаблонів функції є представлення використовуваного функцією типу не у вигляді якогось специфічного типу, наприклад, int, а за допомогою назви, замість якої може бути представлений довільний тип. В програмі 24.1 таким прикладом є Т. Ключове слово template сповіщає компілятор про те, що визначається шаблон функції. Ключове слово <class> може бути замінене на type. Оскільки типи користувача можна визначати за допомогою класів, різниця між типами і класами незначна. Змінна після слова class (в нашому випадку T), називається аргументом шаблону. Всередині всього визначення шаблону будь-який конкретний тип даних, такий як int, заміняє тип Т. В попередній програмі Т зустрічається 2 рази: в якості типу аргументу і типу функції. В складніших випадках воно може зустрічатися частніше, в тому числі в тілі функції.

 

Дії компілятора

Побачивши ключове слово template і визначення функції після нього, компілятор не виконує практично ніяких дій. Шаблон сам по собі не викликає генерації компілятором якогось коду і не може цього зробити, оскільки не знає, з яким типом даних працюватиме функція. Реальна генерація відбувається в ході виконання програми при виклику функції. Це називається реалізацією шаблону функції, при цьому кожен реалізований шаблон функції називається шаблонною функцією.

Зауважимо, що об’єм використовуваної оперативної пам’яті при цьому не зменшується: як було три функції abs, так і залишилось. Натомість істотно спрощується лістинг і спрощується задача внесення змін в програму.

Компілятор приймає рішення про те, як компілювати функцію, виходячи тільки з типу даних, використовуваних у шаблоні аргумента. Тип даних, якиі повертає функція, при цьому неістотний. Це дещо нагадує те, як компілятор вирішує, котру з перезавантажених функцій вибрати.

Як вже зрозуміло, шаблон функції – це не функція, а тільки трафарет для її створення.. Це схоже на поняття класу: клас сам по собі не є нічим конкретним, це тільки база для створення багатьох схожих об’єктів.

 


<== попередня лекція | наступна лекція ==>
Шаблони функцій | Шаблони функцій з кількома аргументами


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн