Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lekcii_1_10 / Лекция 08.pptx
Скачиваний:
56
Добавлен:
21.05.2015
Размер:
153.56 Кб
Скачать

Ограничения при использовании ссылок

На применение ссылочных переменных накладывается ряд следующих ограничений:

Нельзя ссылаться на ссылочную переменную.

Нельзя создавать массивы ссылок.

Нельзя создавать указатель на ссылку, т.е. нельзя к ссылке

Перегрузка функций

Перегрузка функций это

механизм, который позволяет двум родственным функциям иметь

одинаковые имена.

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

(function overloading), а функции,

// "Трехкратная" перегрузка функции f(). #include <iostream>

using namespace std;

void f(int i); //

один целочисленный параметр

void

f(int i,

int

j); // два целочисленных параметра

void

f(double

k);

// один параметр типа double

int main()

{

f (10); // вызов функции f(int)

f(10, 20); // вызов функции f (int, int)

f(12.23); // вызов функции f(double)

return 0;

}

void f(int i)

{

cout << "В функции f(int), i равно " << i ;

}

void f(int i, int j)

{

cout << "В функции f(int, int), i равно " << i;

cout << ", j равно " << j << '\n';

}

void f(double k)

{

cout << "В функции f(double), k равно " << k ;

}

При выполнении эта программа генерирует следующие результаты.

Вфункции f(int), i равно 10

Вфункции f(int, int), i равно 10, j равно 20

Вфункции f(double), к равно 12.23

Чтобы лучше понять выигрыш от перегрузки функций, рассмотрим три функции из стандартной библиотеки: abs(), labs() и fabs().

-функция abs() возвращает модуль целого числа,

-функция labs() возвращает модуль длинного целочисленного значения (типа long),

-функция fabs() возвращает модуль значения с плавающей

// Создание функций myabs() — перегруженной версии функции abs().

#include <iostream> using namespace std;

// Функция myabs() перегружается тремя способами.

int myabs(int i); double myabs(double d); long myabs(long l);

int main()

{

cout << myabs(-10) << "\n";

cout << myabs(-11.0) << "\n";

cout << myabs(-9L) << "\n";

return 0;

}

int myabs(int i)

{

cout << "Использование int-функции myabs(): ";

if(i<0) return -i;

else return i;

}

double myabs(double d)

{

cout << "Использование double-функции myabs(): ";

if(d<0.0) return -d;

else return d;

}

long myabs(long l)

{

cout << "Использование long-функции myabs(): ";

if(1<0) return -1;

else return 1;

}

Результаты выполнения этой программы таковы.

Использование int-функции myabs(): 10

Использование double-функции myabs(): 11

Использование long-функции myabs(): 9

Принципиальная значимость перегрузки состоит в том, что она позволяет обращаться к связанным функциям посредством одного, общего для всех, имени. Следовательно, имя myabs представляет общее действие, которое выполняется во всех случаях.

Соседние файлы в папке lekcii_1_10