编写一个友元函数米该取矩阵指定所在行列的值
时间: 2024-02-01 15:16:19 浏览: 32
假设矩阵的大小为 $n \times m$,其中元素类型为 `int`,矩阵类的定义如下:
```cpp
class Matrix {
private:
int** data;
int n, m;
public:
Matrix(int n, int m);
~Matrix();
int get(int i, int j) const;
friend int get_value(const Matrix& mat, int i, int j);
};
```
其中,`data` 是一个指向指针的指针,用于存储矩阵中元素的值;`n` 和 `m` 分别表示矩阵的行数和列数;`get` 函数用于获取矩阵中指定位置的元素值;`get_value` 是一个友元函数,用于获取矩阵中指定行列的元素值。
友元函数的实现如下:
```cpp
int get_value(const Matrix& mat, int i, int j) {
return mat.data[i][j];
}
```
使用时,可以像下面这样调用:
```cpp
Matrix mat(3, 4);
// 初始化矩阵
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
mat.data[i][j] = i * 4 + j;
}
}
// 获取矩阵中第 2 行第 3 列的元素值
int value = get_value(mat, 1, 2);
std::cout << value << std::endl; // 输出 6
```
需要注意的是,为了使友元函数能够访问到矩阵类的私有成员变量,需要在矩阵类中将其声明为友元函数。在上面的矩阵类定义中,我们在类的最后添加了一行 `friend int get_value(const Matrix& mat, int i, int j);`。