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

{

тело функции

}


 

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

72386. ОПРЕДЕЛЕНИЕ СКОРОСТИ ПУЛИ 197 KB
  Задача: определить скорости пули с помощью крутильного баллистического маятника ФПМ09. Период колебаний T при малых углах отклонения крутильного маятника определяется моментом инерции и модулем кручения проволоки по формуле где J момент инерции; k – модуль кручения проволоки.
72387. Дослідження роботи барабанної сушарки 87 KB
  Визначення продуктивності часу перебування матеріалу в сушарці кількості обертів барабана і потужності необхідної для роботи сушарки. Під час сушіння до вологого матеріалу підводиться тепло чи інші види енергії яка використовується для фазового перетворення вологи що виноситься із зони сушіння.
72388. Дослідження кінетики процесу сушіння дисперсного матеріалу у псевдозрідженому шарі 261 KB
  Побудувати криву сушіння дисперсного матеріалу у псевдозрідженому шарі. Визначити графічно на основі дослідних даних швидкість сушіння в першому періоді і коефіцієнт швидкості сушіння в другому періоді. Розрахувати швидкість сушіння в першому періоді теоретично за рівнянням...
72390. Защита информации в телефонных сетях 1.41 MB
  В данной работе изложен анализ защищенности телефонных сетей, а именно виды угроз, их характер происхождения, классы каналов несанкционированного получения информации, источники появления угроз, кроме этого показаны причины нарушения целостности информации
72392. Изучение микропроцессора КР580ВМ80 2.45 MB
  Цель: приобретение знаний и умений по МПС на базе процессора КР580ВМ80А, умений и навыков по выполнению арифметических и логических операций. Ход работы: Изучить описание ПМК Выполнить структурную схему Выполнить схему эмулятора восьмиразрядного процессора...
72393. Системы подчиненного регулирования (СПР) 602.5 KB
  Пусть обратную связь полагаем единичной. Чтобы обеспечить настройку на ОМ, необходимо применить ПИ-регулятор с ПФ параметры которого следует рассчитать по формулам Переходная характеристика контура по задающему воздействию имеет следующие показатели качества: 4.3%, Быстродействие контура, таким образом...
72394. РАЗРАБОТКА МНОГОПОТОЧНЫХ WINDOWS-ПРИЛОЖЕНИЙ, УПРАВЛЕНИЕ ПОТОКАМИ, ЗАПУСК ДОЧЕРНИХ ПРОЦЕССОВ В СРЕДЕ MS VISUAL C++ 118 KB
  В программе должно быть следующее: описана главная функция приложения WinMin в которой регистрируется класс главного окна создается и выводится это окно организуется цикл обработки очереди сообщений приложения; главное окно приложения должно быть развернутым на весь экран в заголовке...