Еднократно претоварване на оператора
При претоварване на единична операция функцията на оператора няма параметри. Както в предишния случай, обектът, който се модифицира, имплицитно се предава на операторската функция, използвайки този указател.
Унарният оператор, подобно на двоичния, може да бъде претоварен по два начина:
- като функционален компонент без аргументи;
- като глобална функция с един аргумент.
Както знаете, унарният оператор може да бъде префикс и постфикс. За всеки префикс единен оператор изразът #а може да бъде представен по първия начин като a.operator # (), а за втория като #operator (a).
При претоварване на унарния оператор, използван в постфикс форма, израз като # може да бъде представен по първия начин като a.operator # (int) или как оператор # (a, int) с втория метод. В същото време аргумент от тип int не съществува и се използва за разграничаване на префикс и постфикс форми при претоварване.
По-долу е даден пример за програма за претоварване на оператора ++ и изпълнение на множество задания. За да се претовари унарният оператор ++, предшестващ оператора ++ i, се извиква функцията оператор ++ (). Ако операторът ++ следва операнда i ++, тогава се извиква функцията
оператор ++ (int x), където x е 0.
Клас dek_koord
dek_koord (int X, int Y): x (X), y (Y) <>
void dek_koord: operator ++ () // претоварване на оператора ++ A
void dek_koord: operator ++ (int) // операция за претоварване A++
dek_koord dek_koord: оператор = (dek_koord a)
Клас dek_koord
dek_koord (int X, int Y): x (X), y (Y) <>
приятел dek_koord оператор * (int, dek_koord);
приятел dek_koord оператор * (dek_koord, int);
dek_koord оператор * (int k, dek_koord dk) // претоварване на операцията int * A
dek_koord оператор * (dek_koord dk, int k) // операция за претоварване A * int
dek_koord dek_koord: оператор = (dek_koord dk)
низ (const низ &); // конструктор за копиране
приятелски низ оператор + (низ, const низ);
string: string (const string & a) // описание на конструктора за копиране
низ оператор + (низ s1, const низ s2) // операция претоварване +
за (int i = 0; ss.str [i] = s1.str [i]; i ++); // презаписване на символ '\ 0'
ss.str [i] = ''; // изтриване на \ \ 0
за (int j = 0; ss.str [i + 1] = s2.str [j]; i ++, j ++); // добавяме втория ред
string & string: operator = (const string & st) // претоварване на операцията =
str = new char [size = st.size]; // разпределяме памет за нов ред
cout 2) // проверяваме за масив извън границите
- Претоварване на оператора
- Презареждане на дървен материал
- Поетапно инсталиране на снимка на газова пружина
- Цени на официалния уебсайт на санаториум "Zatishye" (област Брянск) за 2019 г.
- Грешка при несъответствие