67301

Перевантаження оператора «()»

Лекция

Информатика, кибернетика и программирование

Можливо, найбільш інтригуючим оператором, якого можна перевантажувати, є оператор виклику функції "()". Під час його перевантаження створюється не новий спосіб виклику функцій, а операторна функція, якій можна передати довільну кількість параметрів.

Украинкский

2014-09-07

34.5 KB

0 чел.

Лекція № 12

Тема: Перевантаження оператора "()"

    Можливо, найбільш інтригуючим оператором, якого можна перевантажувати, є оператор виклику функції "()". Під час його перевантаження створюється не новий спосіб виклику функцій, а операторна функція, якій можна передати довільну кількість параметрів. Почнемо з такого прикладу. Припустимо, що певний клас містить наведене нижче оголошення перевантаженої операторної функції:

int operator()(int a, char *p);

І якщо у програмі створюється об'єкт obj цього класу, то настанова

obj(99, "перевантаження");

перетвориться в такий виклик операторної функції operator():

operator()(99, "перевантаження");

    У загальному випадку при перевантаженні оператора виклику функцій "()" визначаються параметри, які необхідно передати функції operator(). Під час використання оператора "()" у програмі задані аргументи копіюються в ці параметри.

    Як завжди, об'єкт, який здійснює виклик операторної функції (obj у наведеному прикладі), адресується показником this.

    Розглянемо приклад перевантаження оператора виклику функцій "()" для класу kooClass. Тут створюється новий об'єкт класу kooClass, координати якого є результатом підсумовування відповідних значень координат об'єкта і значень, що передаються як аргументи.

Приклад1. Демонстрація механізму перевантаження оператора виклику функцій "()"

class kooClass

{          int x, y, z;                 // Тривимірні координати

    public:

          kooClass() { x = y = z = 0; }

          kooClass(int c, int d, int f) {x = c; y = d; z = f; }

          kooClass operator()(int a, int b, int c);

          void Show(char *s);

};

     // Перевантаження оператора виклику функцій "()".

kooClass kooClass::operator()(int a, int b, int c)

{

kooClass tmp;                     // Створення тимчасового об'єкта

tmp.x = x + a;

tmp.y = y + b;

tmp.z = z + c;

return tmp;                        // Повертає модифікований тимчасовий об'єкт

}

     // Відображення тривимірних координат x, y, z.

void kooClass::Show(char *s)

{          cout << "Координати об'єкта <" << s << ">: ";

           cout << "x= " << x << ", y= " << y << ", z= " << z << endl;

}

void main()

{        kooClass ObjA(1, 2, 3), ObjB;

        ObjB = ObjA(10, 11, 12);         // Виклик функції operator()

        ObjA.Show("A");

        ObjB.Show("B");

}

   Внаслідок виконання ця програма відображає на екрані такі результати:

Координати об'єкта <A>: x= 1, y= 2, z= 3

Координати об'єкта <B>: x= 11, y= 13, z= 15

   Не забувайте, що при перевантаженні оператора виклику функцій "()" можна  використовувати параметри будь-якого типу, та і сама операторна функція operator() може повертати значення будь-якого типу. Вибір типу повинен диктуватися потребами конкретних програм.


 

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

78613. Социальная политика государства 35 KB
  Исходя из приоритета анализа экономики необходимо прежде всего остановиться на регулировании доходов непосредственных Участников хозяйственной деятельности. Дело в том что внутренние механизмы рыночной саморегуляции и распределения доходов не могут быть признаны социально удовлетворительными. Требуется государственное вмешательство с целью корректировки системы распределения и перераспределения доходов в обществе. При этом необходимо сознавать что регулирование доходов отношения найма занятости относятся не только к сфере...
78614. Многообразие форм собственности в рыночной экономике 49.5 KB
  Многообразие форм собственности в рыночной экономике. Так человек обладая собственностью на свою рабочую силу и вступая в отношения найма присваивает заработную плату и тем самым реализует экономическое отношение собственности. Право собственности закрепляет фиксирует и регулирует отношения людей к вещам и в этом смысле оно всегда производно от экономических отношений собственности. Но в то же время оно выступает и предпосылкой экономического присвоения ибо закрепленное право собственности на любые блага открывает путь к экономической...
78615. Конкуренция как условие функционирования рыночной экономики. Виды конкуренции 46 KB
  Конкуренция как условие функционирования рыночной экономики. Конкуренция это соперничество товаропроизводителей за выгодные условия хозяйствования и получение максимальной прибыли. Конкуренция основана на частной собственности и хозяйственной самостоятельности. По форме конкуренция представляет систему норм правил и методов хозяйствования рыночных субъектов.
78616. Основные методы государственного регулирования рыночной экономики 37.5 KB
  Впервые комплексный анализ экономической политики государства был проведен в 1952 г. Согласно Тинбергену вопервых правительственные органы должны выбрать конечные цели экономической политики и сформулировать их что обычно делается в терминах максимизации функции общественного благосостояния. Важнейшая проблема на которой остановился Тинберген соответствие между количеством целей и количеством инструментов при проведении экономической политики. Тинберген сделал вывод что политики могут достичь обеих целей тогда когда количество...
78617. Социальная ориентация рыночной экономики. Формы и методы ее осуществления 39.5 KB
  Нельзя забывать что подавляющая часть общества живет за счет труда. Поэтому в отношении человека как носителя рабочей силы задача заключается в превращении труда в творческую деятельность и более полное использование личностного потенциала. Необходимо постепенное высвобождение человека труда от выполнения исключительно исполнительной функции. В отношении подобного рода производств важное значение имеют новаторские формы организации труда позволяющие преодолеть рутинность монотонность труда и отсутствие его связи с конечными результатами.
78619. Реструктуризация предприятии (производства, управления) 33 KB
  Под ним подразумевается коренная перестройка перепроектирование деловых процессов для достижения радикального скачкообразного улучшения деятельности фирмы. Это позволяет преодолеть негативное воздействие сложившихся хозяйственных догм; пренебрежение действующими системами структурами и процедурами компании и радикальное изменение способов хозяйственной деятельности; приведение к значительным изменениям показателей хозяйственной деятельности на порядок отличающихся от предыдущих. К началу процесса реструктуризации необходимо иметь ее...
78620. Национальная экономика и ее макроэкономические показатели 44.5 KB
  Основными показателями являются: ВНП ВВП ЧНП ВНД ЛД РД. ВВП валовой внутренний продукт рыночная стоимость всех товаров и услуг созданных внутри страны. ВНП ВВП на величину разности между экспортом и импортом экспорт импорт = торговое сальдо. ВВП рассчитывают тремя методами: по расходам по использованию по доходам по производству.
78621. Виды государственного имущества и управление государственным имуществом 28.5 KB
  Государственная собственность – это закрепление права контроля объектов за государством. Государственная собственность в странах развитого капитализма сосредоточена сегодня в крайне ограниченном спектре отраслей которые по тем или иным причинам малорентабельны или даже убыточны что делает их непривлекательными для частного капитала. Речь идет главным образом о социальноэкономической инфраструктуре железнодорожный транспорт коммунальное хозяйство сфера образования Государственная собственность отличается тем что абсолютные права...