Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
мищишин електронка.doc
Скачиваний:
0
Добавлен:
08.12.2018
Размер:
1.04 Mб
Скачать

Void main(void)

{

cout << "максимум 100 і 200 рівний " <<

max(100, 200) << endl;

cout << "максимум 5.4321 та 1.2345 рівний " <<

max(5.4321, 1.2345) << endl;

}

У C++, в процесі компіляції, автоматично створюються оператори для побудови однієї функції, що працює з типом int, і другої функції, що працює з типом float. Оскільки компілятор C++ керує операторами, відповідних функцій, які ви створюєте за допомогою шаблонів, він дозволяє вам використовувати однакові імена для цих функцій, що повертають значення різних типів. Ви не змогли б це зробити, використовуючи тільки перезавантаження функцій.

Попереднє визначення шаблона для функції max використовувало єдиний загальний тип Т. Часто в шаблоні функції потрібно казати декілька типів. Наприклад, наступні оператори створюють шаблон для функції show_array, яка виводить елементи масиву. Шаблон використовує тип Т для визначення типу масиву і тип Т1 для вказівки типу параметра count:

template<class T, class Tl> void show_array(T *array, T1 count)

{

T1 index;

for (index = 0; index < count; index++)

cout << array[index] << ' ';

cout << endl;

}

Як і раніше, програма повинна вказати прототипи функцій для необхідних типів:

void show_array(int *, int);

void show_array(float *, unsigned);

Наступна програма SHOW_TEM.CPP використовує шаблон для створення функцій, які виводять масиви типу int і типу float.

template<class T, class T1> void show_array( T *array,T1 count)

{

T1 index;

for (index = 0; index < count; index++)

cout << array [index] << ' ';

cout << endl;

}

void show_array(int *, int);

void show_array(float *, unsigned);

Void main(void)

{

int pages[ ] = { 100, 200, 300, 400, 500 };

float prices[ ] = { 10.05, 20.10, 30.15 };

show_array(pages, 5);

show_array(prices, 3);

}

30. Використовування шаблонів класів

Припустимо ви створюєте клас масиву, в якому є методи для обчислення суми і середнього значення збережених в масиві чисел. Припустимо, що ви працюєте з масивом типу int, і ваш клас міг би виглядати наступним чином:

class array {

public:

array(int size);

long sum (void);

int average_value(void);

void show_array(void);

int add_value(int);

private:

int *data;

int size;

int index;

};

Для прикладу розглянемо програму I_ARRAY.CPP, що використовує клас array для роботи зі значеннями типу int:

class array {

public:

array(int size);

long sum(void);

int average_value (void);

void show_array(void);

int add_value(int);

private:

int *data;

int size;

int index;

};

array::array(int size)

{

data = new int[size];

if (data == NULL)

{

cout << "недостатньо пам'яті - програма завершується"

<< endl;

exit(l);

}

array::size = size;

array::index = 0;

}

long array::sum (void)

{

long sum = 0;

for (int i = 0; i < index; i++)

sum += data[i];

return(sum);

}

int array::average_value(void)

{

long sum = 0;

for (int i = 0; i < index; i++)

sum += data[i];

return(sum / index);

}

void array::show_array(void)

{

for (int i = 0; i < index; i++)

cout << data[i] << ' ';

cout << endl;

}

int array::add_value(int value)

{

if (index == size)

return(-1); // Масив повний

else

{

data[index]= value;

index++;

return(0); / / Успішно

}

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]