Class if_greater

{

public:

int operator ( ) (int a, int b) const {return a>b;}

};

 

Використання такого класу має специфічний синтаксис. Розглянемо приклад:

 

if_greater х;

cout <<х(1, 5) << endl; // Результат - 0

cout << if_greater( )(5, 1) << endl; // Результат – 1

 

Оскільки в класі if_greater визначена операція виклику функції з двома параметрами, вираз х(1, 5) є допустимим (те ж саме можна записати у вигляді x.operator () (1, 5) ). Як видно з прикладу, об'єкт функціонального класу використовується так, як якби він був функцією.

У другому операторові виведення вираз if_greater() використовується для виклику конструктору за умовчанням класу if_greater. Результатом виконання цього виразу є об'єкт класу if_greater. Далі, як і у попередньому випадку, для цього об'єкту викликається функція з двома аргументами, записаними в круглих дужках. Оператор () можна визначати тільки як метод класу. Можна визначити перевантажені оператори виклику функції з різною кількістю аргументів. Функціональні об'єкти широко застосовуються в стандартній бібліотеці C++.

 

5.7 Перевантаження оператору індексування

 

Оператор індексування [ ] зазвичай перевантажується, коли тип класу представляє безліч значень, для яких індексування має сенс. Оператор індексування повинен повертати посилання на елемент, що міститься в множині. Покажемо це на прикладі класу Vect, призначеного для зберігання масиву цілих чисел і безпечної роботи з ним:

 

#include <iostream>

using namespace std;

 








Дата добавления: 2014-12-26; просмотров: 1171;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.004 сек.