м аргументом, тому що другим є об'єкт, для якого викликана операція. Слід також пам'ятати, що операція присвоювання "=" може перевантажуватися тільки оголошенням методу без описателя static. Те ж відноситься до операцій "()" і "[]". br/>
3. Пpимеp програми з перевантаженням операцій
Нехай необхідно запрограмувати перевизначення операцій для об'єкта "рядок", де операція "+" означатиме конкатенацію рядків.
/********************/
/* Operations for */
/* Class */
/* String */
/********************/
/* v.25.12.2002 */
# include "iostream.h"
# include "string.h" String {: * PointerToString;// Покажчик на строкуStringSize;// Довжина рядка: (char *);
~ String (); Print (); operator + (String);
};
// Конструктор :: String (char * Str)
{= strlen (Str); = new char [StringSize + 1]; (PointerToString, Str);
}
// Деструктор :: ~ String ()
{= 0; PointerToString; = NULL;
}
// Перевизначення операцііString :: operator + (String One)
{Result (""); Length; (Result.PointerToString, One.PointerToString); = strlen (One.PointerToString); (Result.PointerToString, PointerToString + Length, (PointerToString)) ;. StringSize = strlen (Result.PointerToString) + 1;. PointerToString [Result.StringSize] = ' 0'; (Result);
}
// Визначення функції виведення об'ектаString :: Print ()
{<
}
// Програма, що перевіряє працездатність операції "+" main ()
{A ("111");. Print (); B ("222");. Print (); C (""); = A + B;. Print ();
}
4. Поліморфізм
В одному і тому ж класі можна визначити або описати будь-яке число методів з однаковим ім'ям. При цьому важливо лише те, щоб формальні параметри однойменних функцій-методів як-небудь розрізнялися. Цей випадок зазвичай називають перевантаженням меетодов-функцій. p align="justify"> Однак і підклас (похідний клас) може містити функцію-метод з ім'ям, що збігається з уже присутнім у базовому класі. Такий випадок назвают поліморфізмом . Наприклад, конструкції типу SubClass з нижченаведеного фрагмента програми можуть мати власні методи для друку print ().
SubClass:...