46261

Значения параметров по умолчанию. Перегрузка функций и операторов. Дружественные функции

Доклад

Информатика, кибернетика и программирование

Дружественная функция объявляется внутри класса, к элементам которого ей нужен доступ, с ключевым словом friend. Дружественная функция может быть обычной функцией или методом другого ранее определенного класса.

Русский

2013-11-20

13.3 KB

1 чел.

5. Значения параметров по умолчанию. Перегрузка функций и операторов. Дружественные функции.

Дружественные функции и классы

• Дружественная функция объявляется внутри класса, к элементам которого ей нужен доступ, с ключевым словом friend.

• Дружественная функция может быть обычной функцией или методом другого ранее определенного класса.

• Одна функция может быть дружественной сразу нескольким классами.

class Hero {

public:

 void Kill(Monster &) {

   M.health = 0; M.ammo = 0;

}

};

class Monster {

friend int StealAmmo(Monster &);

friend void Hero::Kill(Monster &);  

};

int StealAmmo(Monster &M) {

return --M.ammo;

}

Значения параметров по умолчанию

У функции может быть больше параметров, чем в самых простых и наиболее часто используемых случаях.

void Print(int n, int base)

{

 switch(base) {

case 8:  cout << oct << n << endl; break;

 case 10: cout << dec << n << endl; break;

 case 16: cout << hex << n << endl; break;

 }

}

Параметры по умолчанию должны идти в конце функции:

// нормально

int f(int, int = 0, char* = 0);   

// ошибка

int g(int = 0, int = 0, char*);   

// ошибка

int h(int = 0, int, char* = 0);

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

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

В большинстве ранних языков программирования, для упрощения процесса

трансляции существовало ограничение, согласно которому одновременно в программе не может быть доступно более одной процедуры с одним и тем же именем.

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

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

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

void Print(int n, int base = 10)

Эквивалентная запись при помощи перегрузки:

void Print(int n) { Print(n, 10); }

Перегрузка оператора состоит в изменении смысла оператора (например, оператора плюс (+), который обычно в C++ используется для сложения) при использовании его с определенным классом.

• при перегрузке операций сохраняются количество аргументов, приоритеты

операций и правила ассоциации (справа налево или слева направо), используемые в

стандартных типах данных

• для стандартных типов данных переопределять операции нельзя

• функции-операции не могут иметь аргументов по умолчанию

• функции-операции наследуются, за исключением =

тип operator операция (список параметров)

{

тело функции

}


 

А также другие работы, которые могут Вас заинтересовать

41331. Определение отношения e/m при помощи фокусировки электронного пучка в продольном магнитном поле 219 KB
  Приборы: потенциометр 100 Ом 2А вольтметр градуировка 600 В вся шкала 1200 В класс точности 10 амперметр градуировка 150 А вся шкала 3 А класс точности 05. а Ищем Vград Класс точности = 10; Vград Vномин = 001; Vград = 1200 001 = 12 В Vград = 12 В б Ищем Vотсч Градуировка шкалы до 600 В; установка до 1200 В относительно всей шкалы. Общая формула: а Ищем Iград Класс точности = 05; Iград Iномин = 0005; Iград = 3 0005 = 0015 А Iград = 0015 А б Ищем Iотсч Градуировка шкалы до 150 А; установка до 3...
41332. Определение моментов инерции тела 329.5 KB
  Отчет по работе № 90 “Определение моментов инерции тела” студента 12 группы I курса Василькова Сергея Дмитриевича. Приборы: штангенциркуль (0,05 мм); весы (гиревые) (1 г); секундомер (0,1 с). Изучаемый прибор...
41334. Определение моментов инерции тела. Дополнение к отчету по работе 37 KB
  Момент инерции для известного тела: К = К2 К1 = 0028 0002 кгм2 Параметры известного тела: s = 21375 мм; p = 175 мм; l = 25 мм Аналитическое вычисление:.
41337. Регулировка токов и напряжений 916.5 KB
  Приборы: два реостата 500 Ом; 06А амперметр точность 0. Задание 1: изучение реостата. Исследуемая схема: где  сопротивление потребляющей ток нагрузки; R сопротивление полностью введенного реостата;  электродвижущая сила источника тока А амперметр; V1 вольтметр для нагрузки; V2 вольтметр для источника тока; К ключ.
41338. Регулировка токов и напряжений. Дополнение к лабораторной работе 252.05 KB
  При сопоставлении графиков зависимостей можно сказать, что при малых токах лучше использовать потенциометр, а при больших – реостат.
41339. ОСНОВНЫЕ ИЗМЕРЕНИЯ С ЭЛЕКТРОННЫМ ОСЦИЛОГРАФОМ 274.5 KB
  Для проверки линейности усилителя вертикального отклонения осциллографа строим график зависимости отклонения луча от подаваемого напряжения измеренного вольтметром V по схеме 1. II Для определения чувствительности осциллографа по осям X и Y строим графики зависимости отклонения луча от положения ручек регулировки чувствительности. Усилитель вертикального отклонения. Максимальная чувствительность усилителя вертикального отклонения = 2.