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 операция (список параметров)

{

тело функции

}


 

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

55422. Арифметична й геометрична прогресії, їх означення та властивості. Формули n–го члена кожної прогресії 57 KB
  Мети уроку: ввести означення арифметичної й геометричної прогресій; працювати над засвоєнням учнями відповідної термінології різниці арифметичної прогресії та знаменника геометричної прогресії; рекурентної формули та характеристичних властивостей прогресій;
55423. Арифметична і геометрична прогресії. Розв’язування задач 91 KB
  Мета: Поглибити знання учнів з теми Арифметична і геометрична прогресії сприяти розвитку мислення і творчих здібностей учнів формувати їх пізнавальний досвід; виховувати інтерес до математики розвивати кругозір.
55424. Прогресії навколо нас. Розв'язування задач прикладного змісту 121.5 KB
  Узагальнити знання учнів про прогресії закріпити навички обчислення суми показати практичне застосування теми на прикладах задач із життя та історичних задач; розвивати вміння учнів створювати математичні моделі до розвязування задач;...
55425. АРИФМЕТИЧНА ПРОГРЕСІЯ І ЇЇ ЗАСТОСУВАННЯ 148.5 KB
  Сьогодні на уроці ми повинні повторити визначення арифметичної прогресії формули та за їх допомогою успішно розвязувати задачі. Що означають фрази Частка пенсіонерів у країні росте в арифметичній прогресії При зростаючій відносній масі ракети ...
55426. Арифметическая и геометрическая прогрессии 69.5 KB
  Цель урока: формировать умения применять полученные знания в нестандартных условиях; учить анализировать и систематизировать знания, полученные на уроках и из дополнительной литературы.
55427. ОСЕННЯЯ ПРОГУЛКА В ЛЕС 585 KB
  Цель: Учить детей слушать и понимать эмоциональное содержание музыки А. Вивальди «Осень»; определять отрывок из музыкального произведения А. Филиппенка «Дождик»; умение слышать звуки, связанные с явлениями окружающего мира (ветер, капли дождя)...
55428. Осенняя прогулка 32 KB
  Психолого-педагогические задачи: расширять представления детей об окружающей природе; развивать художественное восприятие детей; развивать внимание; формировать певческие навыки, умение импровизировать на музыкальных инструментах...
55429. Впровадження педагогічних технологій в навчально-виховний процес з метою формування життєвих компетенцій 92 KB
  Впровадження компетентнісно-орієнтованого підходу в навчальновиховний процес зявляється нова освітня позиція що передбачає заміну учнівських стандартів поняттями компетенція і компетентність. Виділяють наступні види компетенцій: інформаційна компетенція соціокультурна компетенція комунікативна компетенція діяльнісна...
55430. Методика организации коррекционной работы в старших классах общеобразовательной школы 73 KB
  Коррекция ЗУН - способ преодоления неуспеваемости учащихся Учебный процесс представляет собой сложную динамическую систему в которой в органическом единстве осуществляется взаимосвязанная деятельность учителя преподавание и ученика учение.