«

»

C++. Функции. Шаблоны. Локальные и глобальные переменные

Шаблон — особый вид функции. С помощью шаблона функции можно определить алгоритм, который будет применяться к данным различных типов. Механизм работы шаблона заключается в том, что на этапе компиляции конкретный тип данных передается в функцию в виде параметра.

Простейшую функцию-шаблон в общем виде можно записать так:

template <class Type> заголовок
{
тело функции
}

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

Рассмотрим пример шаблона поиска наименьшего из четырех чисел.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include "stdafx.h"
#include <iostream>
using namespace std;
//опредилим абстрактный тип данных
//с помощью служебного слова Type
template <class Type>
//определяем функцию с использованием
//типа данных Type
Type minimum(Type a, Type b, Type c, Type d)
{
Type min=a;
if (b<min) min=b;
if (c<min) min=c;
if (d<min) min=d;
return min;
}
int main ()
{
int ia, ib, ic, id, mini; float ra, rb, rc, rd, minr;
cout<<"vvod 4 theluh chisla \t"; cin>>ia>>ib>>ic>>id;
//вызов функции minimum, в которую
//передаем 4 целых значения
mini=minimum(ia, ib, ic, id);
cout<<"\n minimalnoe chislo= "<<mini<<"\n";
cout<<"vvod 4 vechestvennuh chisla \t"; cin>>ra>>rb>>rc>>rd;
//вызов функции minimum, в которую
//передаем 4 вещественных числа
minr=minimum(ra, rb, rc, rd);
cout<<"\n minimalnoe chislo= "<<minr<<"\n";
system("pause");
return 0;
}

Так выглядит результат работы программы:

Аналогичные программы лучше и удобнее составлять с использованием массивов. О них мы будем говорить в следующих уроках. А пока, давайте более детально разберем локальные и глобальные переменные, о которых уже было сказано в первом уроке про функции.

Как известно, по месту объявления переменные в языке C++ делятся на три класса: локальные, глобальные и переменные, описанные в списке формальных параметров функции. Все эти переменные имеют разную область видимости.

Локальные переменные объявляются внутри функции и доступны только в ней. О таких переменных говорят, что они имеют локальную видимость, то есть могут быть использованы только в той функции, в которой описаны.

Глобальные переменные описывают вне всех функций. Они доступны из любой точки программы, то есть их область видимости охватывает весь код.

Одно и тоже имя может использоваться при определении глобальной и локальной переменной. В этом случае в теле функции локальная переменная имеет преимущество и «закрывает» собой глобальную. Вне этой функции «работает» глобальное описание переменной.

Из функции, где действует локальное описание переменной, можно обратиться к глобальной переменной с таким же именем, используя оператор расширения области видимости.

Рассмотрим пример:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include "stdafx.h"
#include <iostream>
using namespace std;
float pr=100.678; //переменная pr определенна глобально
int prostoe (int n)
{
int pr=1,i; //переменная pr определенна локально
if (n<0) pr=0;
else
for (i=2; i<=n/2; i++)
if (n%i==0) {pr=0; break;}
cout<<"local pr="<<pr<<"\n"; //вывод локальной переменной
cout<<"global pr="<<::pr<<"\n"; //вывод глобальной переменной
return pr;
}
int main ()
{
int g;
cout<<"g="; cin>>g;
if (prostoe(g)) cout<<"g - prostoe \n";
else cout<<"g - ne prostoe \n";
system("pause");
return 0;
}

Результат работы программы:

Это был последний урок из категории «Функции C++». В следующих уроках вы узнаете что такое массивы и как их использовать в алгоритме программы.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Вы можете использовать эти теги HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Проверка на человечность *