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

{

тело функции

}


 

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

25925. Контроллеры, командоаппараты, реостаты. Определения. Область применения 33 KB
  КОМАНДОАППАРАТ электрический аппарат для различного рода переключений электрических цепей в системах управления объектами или технологическими процессами. Простейшие командоаппараты кнопки управления концевые выключатели контроллеры. Командоаппараты предназначены для автоамтического дистационного управления электроприводами в качестве путевых конечных выключателей где требуется особая точность и надежность управления.Командоаппараты рассчитаны для работы в цепях управления постоянного тока напряжением до 440 В и до 380 В переменного...
25927. Контакторы электромагнитные. Назначение контакторов. Контакторы постоянного и переменного тока. Конструктивные особенности. Выбор контакторов 42 KB
  Контакторы постоянного и переменного тока. Классификация электромагнитных контакторов Общепромышленные контакторы классифицируются: по роду тока главной цепи и цепи управления включающей катушки постоянного переменного постоянного и переменного тока; по числу главных полюсов от 1 до 5; по номинальному току главной цепи от 15 до 4800 А; по номинальному напряжению главной цепи: от 27 до 2000 В постоянного тока; от 110 до 1600 В переменного тока частотой 50 60 500 1000 2400 8000 10 000 Гц; по номинальному напряжению включающей...
25928. Магнитные пускатели. Назначение пускателей. Схема включения. Выбор пускателей 24.5 KB
  Магнитные пускатели. Характеристики пускателей Современные магнитные пускатели классифицируются: по назначению нереверсивные реверсивные наличию или отсутствию тепловых реле и кнопок управления степени защиты от воздействия окружающей среды уровням коммутируемых токов рабочему напряжению катушки. Магнитные пускатели применяются для управления электрическими нагрузками в диапазоне мощностей от 75 до 80 кВт. Чаще всего пускатели располагают максимальной защитой от перегрузок недопустимой продолжительности и от токов повышенной...
25929. Виды щелей дугогасительных устройств. Перемещение дуги под воздействием магнитного поля. Гашение дуги с помощью дугогасительной решетки. Виды дугогасительных решеток 33 KB
  Перемещение дуги под воздействием магнитного поля. Гашение дуги с помощью дугогасительной решетки. Дугогасительное устройство узел высоковольтного выключателя предназначенный для гашения электрической дуги которая возникает на контактах выключателя при размыкании цепи. Гашение дуги в Д.
25930. Способы гашения электрической дуги. Область применения 47.5 KB
  Способы гашения электрической дуги. Способы гашения дуги в коммутационных аппаратах до 1 кВ. Удлинение дуги при быстром расхождении контактов: чем длинее дуга тем большее напряжение необходимо для ее существования. Деление длинной дуги на ряд коротких дуг.
25931. Разъединители. Назначение. Конструктивное исполнение. Принцип действия. Условия выбора 31.5 KB
  Разъединители аппараты которые предназначены для включения и отключения участков электрических цепей под напряжением при отсутствии нагрузочного тока. Разъединитель и механизм его привода должны надежно удерживаться во включенном положении при протекании тока К3. Как мы уже говорили они должны надежно работать при номинальном режиме а также при перегрузках и сквозных токах короткого замыкания. При больших токах контакты выполняют из нескольких до восьми параллельных пластин.
25932. Отделители и короткозамыкатели. Назначение. Конструктивное исполнение. Принцип действия. Условия выбора. Совместная работа отделителей и короткозамыкателей 25 KB
  Для замены выключателей на стороне высокого напряжения используются короткозамыкатели и отделители. Отделитель служит для отключения обесточенной цепи высокого напряжения за малое время не более 01 сек. Короткозамыкатели и отделители устанавливаются на стороне высшего напряжения РУ малоответственных потребителей когда в целях экономии площади и стоимости РУ выключатели предусмотрены только на стороне низшего напряжения. Отделители и короткозамыкатели устанавливаются на стороне высшего напряжения в менее ответственных РУ в целях экономии...
25933. Реакторы. Назначение. Конструктивное исполнение. Принцип действия. Условия выбора. Сдвоенные реакторы 26 KB
  Реакторы. Сдвоенные реакторы. Для ограничения ударного тока короткого замыкания применяют токоограничивающие реакторы. По этой причине реакторы выполняют без стальных сердечников несмотря на то что при этом для поддержания такого же значения индуктивности их приходится делать больших размеров и массы.