Объектно-ориентированное программирование на языке С++. Лясин Д.Н - 43 стр.

UptoLike

Составители: 

43
cout<<c;
getch();
}
В приведенном примере для класса «двумерный массив целых чисел»
перегружены три операции: операция умножения ‘*’, выполняющая умноже-
ние массива по правилам перемножения матриц, операция приведения типа
int()’, которая применительно к массиву вычисляет сумму элементов массива,
а также операция присвоения ‘=’, которая поэлементно копирует содержимое
одного массива в другой. Рассмотрим подробнее операцию-функцию
operator * . Данная операция-функция определена как внешняя по отношению
к классу функция с правами друга, так как она работает с частными компонен-
тами класса n, m, mas. Функция имеет два параметраэто операнды операции
умножения. После такого объявления функции любое использование в про-
грамме выражения типа a*b при условии, что а и b
являются объектами класса
array2, приводит к вызову operator *(a,b). Подобный вызов операции-функции
можно непосредственно поместить в текст программы, но он уступает в по-
нятности и наглядности использованию обычной операции умножения. Таким
образом, при определении операции-функции как внешней функции количе-
ство ее параметров должно совпадать с арностью перегружаемой операции,
поскольку
операнды перегруженной операции становятся фактическими па-
раметрами соответствующей операции-функции.
Для перегрузки операции приведения типаint()’ определена операция-
функция как метод класса array2. При подобном определении один из операн-
дов операции становится тем объектом, для которого вызывается операция-
функция, а остальные операнды (если они есть) передаются как фактические
параметры. Таким образом
, для вызова операции приведения типа с парамет-
ромобъектом класса array2 в последнем примере:
int(m2)
будет вызвана операция-функция в следующем варианте:
       cout<