ВУЗ:
Составители:
Рубрика:
Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М.
// оператор присваивания
Matrix& Matrix::operator = (Matrix& ob)
{
if(n != ob.n || m != ob.m)
{
// освобождение памяти в левом операнде
for(int i = 0; i < m; i++)
delete [] a[i];
delete [] a;
// выделение памяти в левом операнде
n = ob.n;
m = ob.m;
a = new double* [m];
for(int i=0; i<m; i++)
a[i] = new double [n];
}
// копирование данных правого операнда в левый
for(int i = 0; i < m; i++)
for(int j = 0; j < n; j++)
a[i][j] = ob.a[i][j];
return *this;
}
Реализация остальных методов класса Matrix и дружественных ему
функций не представляет труда. Часть методов была рассмотрена в
разделе 2.2.5 при описании правил перегрузки операций, и здесь не
приводится.
3.2.2. Обработка исключений в классах Matrix и QMatrix
При работе с матрицами исключительные ситуации могут
возникнуть в случаях, когда:
• конструктор получает неположительные значения количества
строк или столбцов;
• происходит обращение к элементу матрицы по некорректным
индексам;
• при выполнении операции сложения размеры двух матриц не
совпадают;
• при выполнении операции умножения количество столбцов
первой матрицы не совпадает с количеством строк второй
матрицы;
138
Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М.
// оператор присваивания
Matrix& Matrix::operator = (Matrix& ob)
{
if(n != ob.n || m != ob.m)
{
// освобождение памяти в левом операнде
for(int i = 0; i < m; i++)
delete [] a[i];
delete [] a;
// выделение памяти в левом операнде
n = ob.n;
m = ob.m;
a = new double* [m];
for(int i=0; iСтраницы
- « первая
- ‹ предыдущая
- …
- 136
- 137
- 138
- 139
- 140
- …
- следующая ›
- последняя »
