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

{

тело функции

}


 

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

82526. Развитие мышления на уроках русского языка 96.5 KB
  Ход проведения: детям были даны карточки с нижеприведёнными упражнениями. Ход проведения: на уроке идёт беседа об известных модельерах анализируются модели одежды созданные ими. Ход проведения: детям говорится что им сейчас будут зачитываться слова и они должны в уме переставить буквы наоборот и тут же записать в тетрадь получившийся результат. Ход проведения: на доске зарисовывается схема.
82527. Развитие памяти и мышления у детей с ОВЗ на занятиях по дополнительной образовательной программе «Я все умею делать сам, что не умею, научусь!» 38 KB
  Ведущий: Дети сейчас я прочитаю вам стихотворение Корнея Чуковского Путаница. Ведущий перед игрой проводит короткую беседу уточняя понимание детьми слов профессия действия. Ведущий. Ведущий.
82531. Память. Виды памяти 72.5 KB
  Виды памяти Память психический познавательный процесс направленный на запечатление сохранение воспроизведение и забывание той или иной информации. В структуре памяти можно выделить четыре относительно самостоятельных процесса: запоминание воспроизведение сохранение и забывание усвоенной ранее информации. Запоминание процесс памяти обеспечивающий удержание материала путём связывания новой информации с прошлым опытом. Запоминание Механическое зубрёжка Осмысленное логическое...
82532. Особенности памяти у детей с задержкой психического развития (ЗПР) 25.5 KB
  У детей с психофизическим инфантилизмом наблюдаются: уменьшение объема и скорости запоминания; неумение рационально организовать и контролировать свою работу; преобладание зрительной памяти над слуховой; У детей с ЗПР соматогенного генеза отмечается недоразвитие кратковременной памяти проявляющееся в снижении скорости запоминания в медленном нарастании продуктивности запоминания снижении объема памяти. У детей с ЗПР церебральноорганического генеза наблюдаются разнообразные нарушения памяти: повышенная тормозимость следов под...
82534. Особенности памяти у детей с нарушениями слуха 36 KB
  Образный материал глухие школьники непосредственно запоминают более успешнее чем слышащие так как у них зрительный опыт богаче. Но в то же время можно встретить в литературе данные что в дошкольном возрасте глухие хуже запоминают места расположения предметов в младшем школьном возрасте путают места расположения предметов сходных по изображению или реальному функциональному назначению. Глухие школьники младших классов применяют вспомогательные средства для запоминания. При запоминании ряда сходных предметов глухие плохо умеют...