Составители:
Рубрика:
44
m2.operator int()
Если бы операция умножения была перегружена методом класса array2 ,
а не внешней функцией, то для нее необходимо было бы определить лишь
один формальный параметр – через него в функцию передавался бы лишь вто-
рой операнд операции умножения. Первый операнд в этом случае становится
тем объектом, для которого вызывается операция функция:
//Листинг 19. Определение операции-функции как метода класса
class array2
{ …
array2& operator*(array2& m2) //функция перегрузки операции
//умножения как метод класса
{ if(m==m2.n)
{array2 *pta;
int s;
pta=new array2(n,m2.m);
for(int i=0;i<n;i++)
{ for(int j=0;j<m2.m;j++)
{s=0;
for(int k=0;k<m;k++)
s+=mas[i][k]*m2.mas[k][j];
pta->mas[i][j]=s;
}
}
return *pta;
}
else cout<<"Error
}
…
};
main()
{ array2 m(2,3),m1(3,4),m2(2,4);
…
m2=m*m1;//можно записать в виде m2=m.operator *(m1)
}
Перегрузка операции присваивания необходима для класса array2 в связи
с тем, что обычное копирование компонентных данных из одного объекта в
другой, которое производит операция присваивания по умолчанию, не подхо-
дит для поставленной задачи. Если написать выражение m1=m2, не переопре-
деляя операцию присваивания, то компонент mas одного объекта будет скопи-
m2.operator int() Если бы операция умножения была перегружена методом класса array2 , а не внешней функцией, то для нее необходимо было бы определить лишь один формальный параметр – через него в функцию передавался бы лишь вто- рой операнд операции умножения. Первый операнд в этом случае становится тем объектом, для которого вызывается операция функция: //Листинг 19. Определение операции-функции как метода класса class array2 { … array2& operator*(array2& m2) //функция перегрузки операции //умножения как метод класса { if(m==m2.n) {array2 *pta; int s; pta=new array2(n,m2.m); for(int i=0;imas[i][j]=s; } } return *pta; } else cout<<"Error } … }; main() { array2 m(2,3),m1(3,4),m2(2,4); … m2=m*m1;//можно записать в виде m2=m.operator *(m1) } Перегрузка операции присваивания необходима для класса array2 в связи с тем, что обычное копирование компонентных данных из одного объекта в другой, которое производит операция присваивания по умолчанию, не подхо- дит для поставленной задачи. Если написать выражение m1=m2, не переопре- деляя операцию присваивания, то компонент mas одного объекта будет скопи- 44
Страницы
- « первая
- ‹ предыдущая
- …
- 42
- 43
- 44
- 45
- 46
- …
- следующая ›
- последняя »