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


 

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

51540. ЗАПОРІЗЬКА СІЧ В ІІ ПОЛОВИНІ Х\/ІІ СТОЛІТТЯ 82.5 KB
  Історичний атлас портрет Івана Сірка картина Розповідь учителя Демонстрація портрета Івана Сірка. Про народження Сірка легенда розповідає що він зявився на світ із зубами і тількино повитуха піднесла його до столу від одразу ж ухопив звідти пиріг з начинкою і зїв його. сказано що Бог його вибрав Сірка поклавши свій знак з правого боку на губі як червоний плат.
51541. СЦЕНАРІЙ ДО ДНЯ ВЧИТЕЛЯ 54.5 KB
  Ведуча: Вклонiться люди вчителю своєму Володаревi слова i пера Крiзь бiль i радiсть роздуми i втому любов його безсмертна проросла. Ведуча: Дорогi вчителi До Вас сьогоднi слова щирої шани сердечної вдячностi. Ведуча: Щоранку поспiшає до школи наш директор.I сьогоднi дорогий наш директор даруємо Вам...
51542. 1 вересня 91.5 KB
  І ліцей відкриває гостинно всі двері назустріч новій дітворі. Сміх навкруги розсипає Дружна ліцейна сімя Сьогодні знов у наше братство проводжає Дітей своїх Україна моя Ідуть вони в ліцей знання щоб здобувати Щоб стати найкращими в світі І щоб Україну свою будувати Й прославить у цьому столітті. Знов гомінливо у ліцейному дворі Це значить що стартує рік навчальний Ми зустрічаємо із відкритим серцем першачків Ліцей співає пісню величальну Хор співає Зелене жито Слова палкі мелодія врочиста Державний гімн і прапор майорить...
51543. Планирование на предприятии. Е.О. Ушакова 574.5 KB
  В методических указаниях изложены основные практические вопросы, входящие в стандартный курс дисциплины «Планирование на предприятии». В данном издании приведена программа курса, практические задания, темы курсовых работ, методические указания по выполнению курсовой работы, темы семинарских занятий, контрольные вопросы, тестовые задания для проверки знаний студентов и список рекомендуемой литературы.
51544. Сценарій свята День знань для першокласників 11.86 MB
  Сценарій свята Перший урок у першому класі Дійові особи: Коза Дереза Телесик вчителька першокласники учні 5ого класу. Вчителька. Шановна пані Може ви знаєте що тут за свято І хто ви така Вчителька. Здрастуйте добродійко Я вчителька.
51545. Знову до школи 54 KB
  How mny units re there in this textbook Wht re the nmes of these units Wht re we going to study in them Wht sections re there t the end of the book Wht informtion cn you find in these sections Учні ланцюжком відповідають на запитання вчителя. Look t the picture nd tell wht we re going to tlk bout during our lesson tody. Т: sk your friends wht they did during the summer holidys. HO1: Wht did your friends do during June: ________________________________________________________________________________ July:...