"> або * ).
Перевантаження сенсу операцій здійснюється за допомогою визначення відповідних функцій, що визначають алгоритм виконання операції над об'єктами класів. Визначення цих функцій повністю аналогічно визначенню методів класу, за винятком того, що в якості імені функції вказується рядок operator @, де @ - знак переобумовленої (частіше, доопределяется) операції. p align="justify"> Наприклад, можна довизначити операцію "+" для текстових рядків як операцію конкатенації (злиття рядків) наступним чином.
String {:
char * PointerToString;// Покажчик на строкуStringSize; // Довжина рядка
public:
String (char *); // Конструктор
~ String (); // Деструктор
void Print ();
String operator + (String); // Перевантаження операції
}; // "+"
// ---------------------------------------- ------------//
// Визначення сенсу операції "+" як//
// конкатенації текстових рядків//
// ---------------------------------------- ------------// String :: operator + (String One)
{
// Ініціалізація об'єкта Result
// (він буде результатом конкатенації) Result (""); Length;
// Копіювання першого рядка в результурующую (Result.PointerToString, One.PointerToString);
// Встановлення довжини рядка об'єкта, для якого
// буде викликана операція = strlen (One.PointerToString);
// Додавання другого рядка слідом за першою (Result.PointerToString, PointerToString + Length, (PointerToString));
// Установка загальної довжини рядка в результате.StringSize = strlen (Result.PointerToString) + 1;. PointerToString [Result.StringSize] = ' 0'; (Result);
}
. Перевантаження різних операцій
Для багатьох операцій С + + існують свої особливості при перевантаженні (доопределение). Так унарні операції перевизначаються з описом функції операції без аргументу, наприклад:
A {//... operator-- () {//текст функції для операції - } ;
// ...
};
Відповідно доопределение бінарної операції використовує опис функції операції з одни...