ВУЗ:
Составители:
Рубрика:
Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М.
методом какого-либо класса и поэтому все операнды операции
указываются в этой функции в качестве параметров. При этом возникает
проблема доступа к данным объекта класса. Напомним, что структурные
свойства класса обычно являются закрытыми членами класса и
недоступны для других функций. Существует механизм, который
позволяет дать возможность доступа к закрытым членам класса из
некоторой внешней функции или методов другого класса. Данный
механизм называют дружественностью. Если функция является
дружественной классу, в объявление класса включается ее прототип,
предваренный ключевым словом friend:
class Matrix
{
. . .
friend Matrix operator*(double, Matrix);
. . .
};
Реализация дружественной функции будет иметь следующий вид:
// операция умножения числа на матрицу
Matrix operator * (double b, Matrix ob)
{
Matrix temp(ob.m, ob.n);
// заполнение матрицы-результата
for(int i = 0; i < ob.m; i++)
for(int j = 0; j < ob.n; j++)
temp.a[i][j] = ob.a[i][j] * b;
return temp;
}
Вызов этой операции "*" будет таким:
. . .
Matrix a(2,3);
a.InputMatrix();
Matrix c = 5 * a;
. . .
Отметим, что в качестве дружетвенных функций могут выступать не
только операции, но и обычные функции, которым необходим доступ к
закрытым элементам класса.
82
Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М.
методом какого-либо класса и поэтому все операнды операции
указываются в этой функции в качестве параметров. При этом возникает
проблема доступа к данным объекта класса. Напомним, что структурные
свойства класса обычно являются закрытыми членами класса и
недоступны для других функций. Существует механизм, который
позволяет дать возможность доступа к закрытым членам класса из
некоторой внешней функции или методов другого класса. Данный
механизм называют дружественностью. Если функция является
дружественной классу, в объявление класса включается ее прототип,
предваренный ключевым словом friend:
class Matrix
{
. . .
friend Matrix operator*(double, Matrix);
. . .
};
Реализация дружественной функции будет иметь следующий вид:
// операция умножения числа на матрицу
Matrix operator * (double b, Matrix ob)
{
Matrix temp(ob.m, ob.n);
// заполнение матрицы-результата
for(int i = 0; i < ob.m; i++)
for(int j = 0; j < ob.n; j++)
temp.a[i][j] = ob.a[i][j] * b;
return temp;
}
Вызов этой операции "*" будет таким:
. . .
Matrix a(2,3);
a.InputMatrix();
Matrix c = 5 * a;
. . .
Отметим, что в качестве дружетвенных функций могут выступать не
только операции, но и обычные функции, которым необходим доступ к
закрытым элементам класса.
82
Страницы
- « первая
- ‹ предыдущая
- …
- 80
- 81
- 82
- 83
- 84
- …
- следующая ›
- последняя »
