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

{

тело функции

}


 

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

10312. Давид Юм - философ английского Просвещения 15.5 KB
  Давид Юм философ английского Просвещения критиковал религиозный и философский догматизм который заложился в сознании людей. Он был философомскептиком антирационалистом. Юм известен своей мыслью о том что не существует объективной причинной связи вещей.Когда мы на
10313. Язык и мышление, их взаимосвязь 42.75 KB
  Язык и мышление Язык главная из знаковых систем человека важнейшее средство человеческого общения способ осуществления мышления. Человек единственной существо моделирующее внешний мир при помощи знаковых систем. В любом человеческом сообществе люди реагиру...
10314. Функции культуры 26 KB
  Функции культуры Основная человекотворческая Человек живет не в природе а в культуре. В ней он сам себя познает. Здесь есть и моменты миропонимания формирования воспитания и социологизации человека. Иначе она еще называется преобразующей функцией поскольку освое
10315. Категории диалектики. Законы диалектики 30 KB
  Категории диалектики общие понятия отражающие наиболее существенные закономерные связи и отношения реальности. Можно сказать что философские категории воспроизводят свойства и отношения бытия в максимально общем виде. Регулируя реальный процесс мышлени они в ходе е
10316. Общество - это продукт совметной историчсекой деятельности дюдей 18.99 KB
  Общество это продукт совместной исторической деятельности людей совокупность общественных связей отношений и компонентов особый тип надындивидуальной и надприродной системной организации. Общество представляет собой специфическую систему включающую множество э...
10317. Предмет и функции философии, Философские дисциплины 27.54 KB
  Философия есть определенная способность думать о вечных вопросах, о человеческой жизни и смерти, о предназначении человека, и в таком своем качестве она возникла вместе с появлением человеческого рода, Философия имеет дело с предельными, вековечными вопросами.
10318. Мировоззренческая, методологическая, рефлексивно–критическая и интегративная функция философии 26.11 KB
  Содержание Введение 1. Предмет философии. Место философии в системе наук и культуре 2. Основные разделы философии 3. Мировоззренческая методологическая рефлексивно–критическая и интегративная функция философии Заключение Список использованной ли...
10319. Гумилев Л.Н. Этногенез и биосфера Земли 47.04 KB
  Тема: Гумилев Л.Н. Этногенез и биосфера Земли. Этнос и популяция. Этнос не популяция. Начать свой доклад я бы хотел с определения терминов этнос и популяция. Этнос – исторически возникший вид устойчивой социальной группировки людей представленный племенем или народ...
10320. Предмет, задачи, основные категории педагогики и психологии. Формы проявления психики. Связь педагогики и психологии с другими науками. Методология психолого-педагогических дисциплин. Методологическая культура педагога 50.5 KB
  Предмет задачи основные категории педагогики и психологии. Формы проявления психики. Связь педагогики и психологии с другими науками. Методология психологопедагогических дисциплин. Методологическая культура педагога. Педагогика наука изучающая сущность законом