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


 

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

12862. Большая игра «По дороге из желтого кирпича» 52.5 KB
  Большая игра По дороге из желтого кирпича Гончарова Жанна Викторовна педагогпсихолог Как показывает практика большинство детей переходящих в пятый класс особенно в случаях поступления в другое учебное заведение испытывает двойственные чувства. С одной стор...
12863. Программа адаптации выпускников начальной школы к среднему звену 32 KB
  Программа адаптации выпускников начальной школы к среднему звену Каминская Ольга Николаевна педагогпсихолог Из года в год возникает проблема адаптации учащихся при переходе из начального в среднее звено школы. Несмотря на то что ученики уже привыкли к школе...
12864. Путешествие в страну Детства 54.5 KB
  Занятие для учащихся 5х классов Путешествие в страну Детства Цель: развитие эмоциональноволевой сферы детей. Задачи: развитие способности понимать эмоциональное состояние другого человека; развитие умения справляться с чувством страха; развитие ко
12865. Репортаж от одноклассника. Психологическая игра-проект 307.5 KB
  Психологическая играпроект Репортаж от одноклассника Психологическая служба любого образовательного учреждения ставит перед собой задачу выстраивания взаимодействия на решение комплексных задач школы которые реализуются всеми специалистами. Это взаимодействи...
12866. Тренинговые занятия. Я И МЫ 277.5 KB
  Я И МЫ Тренинговые занятия по формированию социальных навыков для учащихся 5го класса Начало учебы в 5м классе особый этап в школьной жизни ребенка. Перед каждым учеником стоит задача адаптации к непривычным условиям обучения: к множеству учебных предметов к новы
12867. ВОЛШЕБНЫЕ ПРИКЛЮЧЕНИЯ 34 KB
  ВОЛШЕБНЫЕ ПРИКЛЮЧЕНИЯ СОДЕРЖАНИЕ ЗАНЯТИЙ Тренинг Волшебные приключения строится как интерактивное игровое общение ровесников. Включает активнодвигательные упражнения и творческие задания направленные на переосмысление и открытие новых способов самовыражен
12868. Невероятное путешествие 44.5 KB
  Большая психологическая игра Невероятное путешествие При переходе в старшее звено могут возникнуть проблемы: в классе сложилось несколько группировок постоянно происходят конфликты учащиеся не могут найти общий язык нельзя провести коллективное мероприятие
12869. Большая психологическая игра Новоселье 42 KB
  Большая психологическая игра Новоселье 1. Название: Новоселье. 2. Задачи игры: создать условия для взаимодействия ребят друг с другом способствующие формированию навыка сотрудничества; развитие рефлексии. 3. Описание проблем или задач развития на решение кото...
12870. ПРИКЛЮЧЕНИЯ В ШКОЛЕ ВОЛШЕБНЫХ НАУК 54.5 KB
  ПРИКЛЮЧЕНИЯ В ШКОЛЕ ВОЛШЕБНЫХ НАУК Зал празднично украшен. Ребята проходят в зал их встречают педагоги помогают занять зрительские и командноигровые места. Занавес закрыт. Фоновая музыка. Вступительное слово: Добрый день Мы рады приветствовать всех собравшихся н...