Supraоnc; оператори за полнење
Преоптоварувањето на операторот овозможува употреба на стандардни јазични оператори за нивните класи. Ова може да се направи со дефинирање на функции со посебно име (со употреба на оператор на клучни зборови)).

Постојат некои ограничувања за преоптоварување на операторите:
- основните карактеристики на операторите не можат да се менуваат (приоритет, насока за проценка, асоцијативност, кардиналност)
- не може да се воведат нови оператори во споредба со оние што постојат на јазикот
- операторите за основните типови не можат да бидат преоптоварени
- операторите не можат да бидат преоптоварени. . *:? и големината на
Операторите можат да бидат преоптоварени од функциите на членовите во училницата или од нормалните функции. Ако се користат функции на член, бројот на параметрите на функциите е 1 помалку од кардиналноста на операторот (првиот операнд се смета за покажувач овој ).
За детали, видете ја книгата „Објектно ориентирано програмирање во C ++“ на страници 52-78.
Изградете час по колекција складирани во форма на едноставна окована листа за складирање на цели броеви за да се овозможи главните операции да се извршуваат со употреба на оператори и да се дозволи колекцијата да се прелистува со помош на повторувач. Напишете главна програма за да го демонстрирате функционирањето на часот.
За да го решиме, ќе ни требаат три класи:
- главната класа наречена Збирка што содржи спроведување на операциите
- приватна класа Нод (вклучени во часот Колекција) кој содржи податоци за јазол во списокот
- Час на повторувач (вклучени во часот Колекција) што овозможува набројување на елементите на колекцијата
Спроведување на C ++ на часови и главната програма за тестирање:
* Спроведува колекција на цели броеви како список
структурен јазол; // Оглас за класа на јазол (за Iterator)
Колекција (): глава (NULL) <> // стандарден конструктор
Колекција (const Collection & c) // конструктор за копирање
// поминете низ колекцијата со повторувач
за (Iterator i = c.Start (); i! = c.End (); i ++)
// и додадете ги јазлите во нашата колекција
колекција & оператор =
за (Iterator i = c.Start (); i! = c.End (); i ++)
// операторот за директен пристап до елементите
int & оператор [] (int k) конст
// претпоставуваме дека индексот е во колекцијата
неважечка Додај (int вредност) // додадете ставка на крај
// случај 2: списокот не е празен
Колекција и оператор + = (инт вредност)
void Вметни (int poz, int val) // вметни елемент
// случај 1: вметнување на почетокот на колекцијата
// случај 2: вметнување во колекцијата
// бараме позиција за вметнување
p-> Следно = нов јазол (val, p-> Следно);
void Избриши (int pos) // избришете ја ставката од наведената позиција
// случај 1: бришење на почетокот на колекцијата
// случај 2: бришење од внатрешноста на колекцијата
void EmptyCollection () // избришете ги сите ставки во колекцијата
Собирање на оператори и оператор + = (Собирање на конститунти и в)
за (Iterator i = c.Start (); i! = c.End (); i ++)
оператор на наплата за конституции +
за (Iterator i = c.Start (); i! = c.End (); i ++)
int ElementNumber () const // добиете број на елементи