АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Вбудовані функції. Основні поняття

Читайте также:
  1. I. Поняття й ознаки об'єкта авторського права.
  2. I. Поняття необережності, як форми вини.
  3. I.4. ОСНОВНІ МОДЕЛІ ЗВЕРТАННЯ В УКРАЇНСЬКІЙ МОВІ
  4. II. Основні напрями роботи, завдання та функції управління
  5. III. Основні правила та обов’язки працівників
  6. IV. Основні обов’язки власника або уповноваженого ним органу
  7. IV. Основні поняття і визначення,
  8. N 1243, 31.10.2011, Наказ, Про Основні орієнтири виховання учнів 1-11 класів загальноосвітніх навчальних закладів України, Міністерство освіти і науки, молоді та спорту України
  9. VІІ.Оперування поняттями
  10. А. ОСНОВНІ ФОРМУЛИ, ЯКІ НЕОБХІДНО ВИКОРИСТАТИ
  11. Аварійний комісар: поняття, функції.
  12. Адаптація. Характеристика адаптацій. Основні концепції адаптаційних пристосувань

Теоретичний матеріал до теми «Перевантаження функцій. Шаблони функцій. Покажчик на функцію. Передача масивів у функції»

Перевантаження функцій

У мові С++ допускається використовувати одне і те саме ім'я функції для різних наборів аргументів (різних типів або різної кількості). Це називається перевантаженням функцій або поліморфізмом. У таких випадках необхідно кожну функцію оголосити й описати окремо. Під час її виклику компілятор автоматично проаналізує прототипи та виконає код відповідної функцій.

Увага! Для функцій, які відрізняються типом значення, яке вони повертають, і мають однаковий набір аргументів, перевантаження у мові С++ не визначено, тобто їм надавати однакові імена не можна.

Перевантаження функцій. Приклад

Використовуючи перевантаження функцій, скласти програму для упорядкування трьох уведених даних або символьного, або цілого типу.

#include<iostream.h>
#include<conio.h>
void sort(int n1, int n2, int n3);

void sort(char n1, char n2, char n3);

int main()
{int i1, i2, i3,k;

char c1, c2, c3;

cout<<“uvedit 1 dlya simvoliv, 2 – dlya chisel\n”; cin>>k;
if (k==1)

{ cout<<“3 simvoli: “;

cin>>c1>>c2>>c3;

sort(c1, c2, c3); }

if (k==2)

{ cout<<“3 chisla: “;

cin>>i1>>i2>>i3;

sort(i1, i2, i3);}

getch ();return 0;}

//----------------------------------------------

Void sort(int n1, int n2, int n3)

{int c;

if (n1>n2) {c=n1; n1=n2; n2=c;}

if (n2>n3) {c=n2; n2=n3; n3=c;}

if (n1>n2) {c=n1; n1=n2; n2=c;}

cout<<n1<<“\t”<<n2<<“\t|<<n3;}

//----------------------------------------------

Void sort(char n1, char n2, char n3)

{char c;

if (n1>n2) {c=n1; n1=n2; n2=c;}

if (n2>n3) {c=n2; n2=n3; n3=c;}

if (n1>n2) {c=n1; n1=n2; n2=c;}

cout<<n1<<“\t”<<n2<<“\t|<<n3;}

Шаблони функцій. Основні поняття

Перевантаження функцій часто буває корисним, але не завжди зручним. Як видно з попереднього прикладу, один і той самий код довелося записувати окремо для змінних символьного типу, а потім для цілих чисел. У мові С++ є змога уникнути таке дублювання за допомогою шаблонів.

Шаблон функції – це опис функції, яка залежить від даних довільного типу. Крім того, така функція може повертати в основну програму результат довільного типу.

Під час виклику такої функції компілятор автоматично проаналізує тип фактичних аргументів, згенерує для них програмний код і виконає відповідні дії.

Такий підхід у програмуванні називається узагальненим програмуванням.

Шаблони функцій. Приклад використання

Використовуючи шаблони функцій, скласти програму для упорядкування трьох уведених даних або символьного, або цілого типу.

#include<iostream.h>
#include<conio.h>
// оголошення шаблона функції

template <class myType>

void sort(myType n1, myType n2, myType n3);

int main()
{

int i1, i2, i3,k;

char c1, c2, c3;

cout<<“uvedit 1 dlya simvoliv, 2 – dlya chisel\n”; cin>>k;
if (k==1)

{ cout<<“3 simvoli: “;

cin>>c1>>c2>>c3;

sort(c1, c2, c3); } // виклик функції

if (k==2)

{ cout<<“3 chisla: “;

cin>>i1>>i2>>i3;

sort(i1, i2, i3);} // виклик функції

getch ();return 0;

}

//----------------------------------------------

// опис шаблона функцій

template <class myType>

void sort(myType n1, myType n2, myType n3);

{

myType c;

if (n1>n2) {c=n1; n1=n2; n2=c;}

if (n2>n3) {c=n2; n2=n3; n3=c;}

if (n1>n2) {c=n1; n1=n2; n2=c;}

cout<<n1<<“\t”<<n2<<“\t|<<n3;

}

Увага! У стандарті ISO/ANSI замість ключового слова class прийнято записувати typename

 

Вбудовані функції. Основні поняття

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

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


1 | 2 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.005 сек.)