Вызов Функції
Вызов функції, тобто запис вираз (список_выражений), можна проінтерпретувати як бінарну операцію, і операцію виклику можна перевантажувати як і, як та інші операції. Список параметрів функції operator () обчислюється та перевіряється у відповідність із звичайними правилами передачі параметрів. Перегружающая функція може бути корисною головним чином заради визначення типів з однією операцією… Читати ще >
Вызов Функції (реферат, курсова, диплом, контрольна)
Вызов Функции
Вызов функції, тобто запис вираз (список_выражений), можна проінтерпретувати як бінарну операцію, і операцію виклику можна перевантажувати як і, як та інші операції. Список параметрів функції operator () обчислюється та перевіряється у відповідність із звичайними правилами передачі параметрів. Перегружающая функція може бути корисною головним чином заради визначення типів з однією операцією й у типів, які мають одна операція настільки переважає, що інші переважно ситуацій годі й вживати на увагу.
Для типу асоціативного масиву assoc ми визначили итератор. Це можна зробити, визначивши клас assoc_iterator, робота, що у тому, щоб у певному порядку поставляти елементи з assoc. Итератору потрібен доступом до даним, які у assoc, й тому він зроблено іншому:
class assoc {.
friend class assoc_iterator;
pair* vec;
int max;
int free;
public:
assoc (int);
int& operator[](char*);
};
Итератор окреслюється.
class assoc_iterator{.
assoc* cs; // поточний масив assoc.
int і; // поточний индекс.
public:
assoc_iterator (assoc& p. s) { cs = &p.s; і = 0; }.
pair* operator ()().
{ return (ifree)? &cs->vec[i++]: 0; }.
};
Надо форматувати assoc_iterator для масиву assoc, після що він повертатиме покажчик нові pair від цього масиву всякий раз, що його будуть активізувати операцією (). Після досягнення кінця масиву воно 0:
main () // вважає входження кожного слова у вводе.
{.
const MAX = 256; // більше найбільшого слова.
char buf[MAX];
assoc vec (512);
while (cin>>buf) vec[buf]++;
assoc_iterator next (vec);
pair* p;
while (p = next ()).
cout << p->name << «: «<< p->val << «n » ;
}.
Итераторный тип на кшталт цього має перевагу над набором функцій, які виконують таку ж роботу: він має власні закриті дані для зберігання ходу ітерації. До того ж зазвичай істотно, щоб одночасно могли працювати багато итераторов цього.
Конечно, таке застосування об'єктів до подання итераторов ніяк особливо з перевантаженням операцій не пов’язано. Багато людей люблять використовувати итераторы з цими операціями, як first (), next () і last () (перший, наступний і другий).
Список литературы
Для підготовки даної роботи було використані матеріали із російського сайту internet.