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() може повертати значення будь-якого типу. Вибір типу повинен диктуватися потребами конкретних програм.


 

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

39356. Проектирование цилиндрического редуктора 364.5 KB
  Объектом курсового проектирования является одноступенчатый редуктор-механизм, состоящий из зубчатой передачи, выполненный в виде отдельного агрегата и служащий для передачи вращения от вала двигателя к валу рабочей машины.
39357. Проблема макроэкономической нестабильности 637.5 KB
  Экономические циклы. Среднесрочный цикл, его причины и фазы. Концепция длинных волн конъюнктуры. Безработица и её формы. Социально-экономические последствия безработицы. Инфляция: сущность, причины, последствия.
39358. Управление основными средствами предприятия 70.97 KB
  Провести анализ основных фондов, в том числе. Проанализировать динамику и структуру основных фондов. Проанализировать показатели эффективности использования основных средств. Выявить резервы по увеличению эффективности использования основных фондов
39359. Силовой расчет механизмов с учетом трения в кинематических парах 119.5 KB
  Способность контактирующих поверхностей звеньев сопротивляться их относительному движению называется внешним трением. Трение обусловлено неидеальным состоянием контактирующих поверхностей (микронеровности, загрязнения, окисные пленки и т.п.)
39360. Роль кросс-культурных исследований в изучении психического развития ребенка 51.05 KB
  Предмет кросс-культурной психологии – изучение сходства и различий психологических переменных в различных культурах и этнических общностях. Кросс-культурные исследования проводятся в рамках разных отраслей психологии: общая психология изучает особенности восприятия, памяти, мышления
39361. Распределение доходов. Заработная плата. Бюджет семьи 80.5 KB
  Доходы – это распределенный продукт, который субъекты экономических отношений получают для личного и производственного потребления. Доходы бывают натуральные (материальные блага и услуги) и денежные.
39362. Привод транспортера 877.5 KB
  При этом марки сталей выбирают с учетом наибольших размеров пары: диаметра для валашестерни и толщины сечения для колеса с припуском на механическую обработку после термообработки. Сочетание шестерни закаленной при нагреве ТВЧ и улучшенного колеса дает большую нагрузочную способность чем улучшенная пара с той же твердостью колеса. Такая пара хорошо прирабатывается; ее применение предпочтительно если нельзя обеспечить высокую твердость зубьев колеса.2 [1] одинаковый для шестерни и колеса но с разными твердостями так как твердость зубьев...
39363. Тарифная политика страховщика на региональном рынке страхования (по различным видам) 44.17 KB
  Только правильно сформированная и реализованная тарифная политика сможет обеспечить выполнение целей и задач страховой компании: рентабельность деятельности и общедоступность страхования для населения, организаций и государства.
39364. Расчет и основные характеристики привода ленточного конвейера 941 KB
  Мощность двигателя зависит от требуемой мощности рабочей машины а его частота вращения от частоты вращения приводного вала рабочей машины.2 Определение передаточного числа привода и его ступеней Передаточное число привода определяется отношением номинальной частоты вращения двигателя к частоте вращения приводного вала рабочей машины при номинальной нагрузке и равно произведению передаточных чисел закрытой и открытой передач.1 Частота вращения приводного вала рабочей машины 6 где: скорость тягового органа м с; диаметр...