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


 

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

44893. Понятие ОМ. Общественное мнение и паблицитный капитал как результаты PR-деятельности 20.26 KB
  Общественное мнение и паблицитный капитал как результаты PRдеятельности Общественное мнение - это специфическое проявление общественного сознания выражающееся в оценках как в устной так и в письменной форме и характеризующее явное отношение групп общественности к актуальным проблемам действительности представляющим общественный интерес. Для PRдеятельности Общественное мнение его преобразование изменение в нужном для субъекта PR направлении это объект и продукт PRдеятельности. Программы деятельности субъектов PR...
44894. Travelling. Путешествие 15.03 KB
  It is аlwys interesting to discover new things different wys of life to meet different people to try different food to listen to different musicl rhythms. Most trvellers nd holidymkers tke cmer with them nd tke pictures of everything tht interests them the sights of city old churches nd cstles views of mountins lkes vlleys plins wterflls forests different kinds of trees flowers nd plnts nimls nd birds.
44895. Трудная жизненная ситуация как категория социальной работы 23 KB
  Устоявшиеся нормативные стандарт трудныепротиворесчивые Признаки ТЖС:1 Неадекватность алгоритм. ЧеловекаТЖС ситуация соц.Факторы ТЖС: поведенческий экзистенциональный вероятностнопрогностическийСтруктура ТЖС:участники связан. Классификация ТЖС: по харкам субъектаиндивидуал.
44896. Синтаксические нормы 15.33 KB
  Благодаря преступной халатности водителя произошла эта авария Выбор падежной формы при гл. Выбор предлога. Выбор падежа при глаголе с отрицанием.
44897. Поняття культури мови. Комунікативні якості культури мови 25.5 KB
  Поняття культури мови. Комунікативні якості культури мови. Культура мови ознака літературної мови параметр за яким встановлюються авторитетні загальновизнані стандарти реалізовані в нормах писемного й усного спілкування. З культурою мови насамперед пов'язують уміння правильно говорити й писати дотримуватися всіх норм літературної мови.
44899. Принципы и технологии оценки недвижимости 13.6 KB
  Оценка недвижимости это прежде всего оценка прав собственности на данную недвижимость. Отсюда следует что оценка недвижимости должна включать оценку самой недвижимости оценку права собственности или права пользования землей или зданиями. Основные принципы оценки недвижимости: Принцип спроса и предложения: заключается в учете действия закона спроса и предложения на стоимость объекта недвижимости.
44900. Представления. Отличие представления от базовых переменных отношения 28.5 KB
  Представления. Отличие представления от базовых переменных отношения. CRETE TBLE ЕМР Однако реляционные системы обычно поддерживают еще один вид именованных переменных отношений называемых представлениями В любой конкретный момент их значение является производным отношением и поэтому упрощенно можно считать что представление это производная переменнаяотношение. Значение данного представления в данное время является результатом вычисления определенного реляционного выражения в данный момент а упомянутое реляционное выражение...