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


 

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

43194. Совершенствование социальной политики в России 549.5 KB
  Это прежде всего решение задач занятости и обеспечения реального уровня прожиточного минимума адресности социальной поддержки достижения оптимального соотношения уровней жизни активной занятой части населения и нетрудоспособных граждан. Налоговая политика использует механизм прогрессивного налогообложения в качестве источника формирования финансовых ресурсов для осуществления социальной поддержки малообеспеченных в социальном плане слоев населения. Реализация социальной защиты населения осуществляется в двух формах: активной и...
43195. СУДОВАЯ ЭНЕРГЕТИЧЕСКАЯ УСТАНОВКА 1.54 MB
  Для судовой энергетической установки характерна сложная структура. В ее состав в основном входит оборудование энергетических систем и трубопроводов. Между которыми существуют сложные физические, параметрические и технико-экономические связи. Для процессов, протекающих в энергетическом оборудовании, характерны значительные изменения параметров – температуры, давления, скорости, сил и моментов, напряжений и деформаций, турбулентности, шума и вибрации, теплопередачи и др.
43196. Проект ПТБ автопредприятия среднего бизнеса в г.Михайловске 365 KB
  Указанные расчеты выполняются с использованием следующих исходных данных (задание из разделов коммерческой эксплуатации):- тип подвижного состава –ВАЗ-2114 среднесписочное количество автомобилей – 200 шт.; реднесуточный пробег автомобилей – 312 км; время в наряде – 24,0 ч; количество дней работы АТП в году – 365; категория условий эксплуатации – III; природно-климатическая зона эксплуатации – умеренно холодный средний пробег автомобиля в долях пробега с начала эксплуатации до капитального ремонта – 0,8; способ хранения: на закрытой площадке.
43197. Решение многомодульных уравнений методом Гаусса 723 KB
  Метод Гаусса — классический метод решения системы линейных алгебраических уравнений (СЛАУ). Это метод последовательного исключения переменных, когда с помощью элементарных преобразований система уравнений приводится к равносильной системе ступенчатого (или треугольного) вида, из которого последовательно, начиная с последних (по номеру) переменных, находятся все остальные переменные.
43198. Рентабельность производства продукции, пути ее роста 322.5 KB
  Прибыль характеризует конечные экономические показатели не только в сфере производства сельскохозяйственной продукции, но и в сфере обращения, реализации. Она является как бы фокусом, в котором находят отражение все слагаемые эффективности производства. С ростом прибыли неразрывно связан рост рентабельности производства. В свою очередь когда идёт речь о том, что то или иное хозяйство рентабельно, это означает, что в этом хозяйстве не только возмещают затраты, связанные с производством и реализацией продукции, но и получают определённую прибыль, позволяющую вести хозяйство на расширенной основе.
43199. ЭКОНОМИКО-СТАТИСТИЧЕСКИЙ АНАЛИЗ СЕБЕСТОИМОСТИ ЗЕРНОВЫХ В СПК «ТАТАРСКОЕ» ЧЕРЛАКСКОГО РАЙОНА ОМСКОЙ ОБЛАСТИ 674 KB
  Целью работы является углубление теоретических знаний в области статистики и приобретение практических навыков сбора и анализа статистической информации, для проведения экономико-статистического анализа. Для достижения данной цели поставим перед собой последовательный ряд задач, которые более полно и наглядно охарактеризуют производственную деятельность предприятия: сбор статистических данных; обработка собранных данных статистическими методами (представление данных в табличном и графическом виде, расчет относительных величин структуры, показателей интенсивности и средних показателей динамики, выравнивание рядов динамики, корреляционно-регрессионный анализ связи, анализ вариации, факторный анализ с помощью индексов); проведение экономико-статистического анализа результатов обработки данных.
43200. Монтаж одноэтажного промышленного здания 148.5 KB
  Перемещение и монтаж элементов и конструкций над перекрытиями, под которыми находятся люди, допускаются в исключительных случаях по письменному распоряжению I главного инженера генподрядной строительно-монтажной организации при возведении зданий, имеющих более пяти этажей, после разработки мероприятии, обеспечивающих безопасное производство работ. При монтажных работах на высоте должна быть определена и хорошо обозначена видимыми предупредительными знаками опасная зона для нахождения и перемещения людей. В необходимых случаях, кроме этого, подают предупредительные звуковые сигналы.
43201. Проектування приводу до стрічкового конвеєра за схемою та графіком навантаження 1.3 MB
  Курсовий проект з деталей машин – перша самостійна розрахунково-конструкторська робота, під час виконанні якої, студент набуває навичок практичного прикладання своїх теоретичних знань, що були отримані при вивченні фундаментальних та загально технічних дисциплін. На перших етапах роботи над проектом дуже важливо опанувати досвід проектування, що був накопичен в промисловості та відображен в ГОСТах та ДСТУ.
43202. Проектирование смесителя лопастного 3.17 MB
  В гравитационных смесителях в результате подъема и сбрасывания смеси внутри вращающегося барабана рисунок 1. В смесителях непрерывного действия поступление компонентов и выход готовой смеси происходит непрерывно. При переналадке на :смесь новой марки они уступают смесителям циклического действия. а схема смесителя; 1 двигатель; 2 клиноременная передача; 3 редуктор; 4 зубчатая передача; 5 разгрузочный затвор; 6 лопастные валы; 7 лопасть; 8 корыто смесителя.