设计有3行3列的矩阵类:定义构造函数 ,定义print函数显示矩阵内容 ; 用友元函数实现矩阵类“!=”运算符的重载,功能为判断两个矩阵是否相等 ;用友元函数实现矩阵类“+”运算符的重载,功能为计算两个矩阵之和 ;用友元函数实现矩阵类“*”运算符的重载,功能为计算两个矩阵之积 ;用友元函数实现矩阵类“++”运算符的重载(前缀运算、后缀运算),功能为矩阵中每个元素都加1
时间: 2024-02-24 09:00:22 浏览: 79
C++之友元:友元函数和友元类详解
5星 · 资源好评率100%
好的,下面是一个简单的实现:
```c++
#include <iostream>
using namespace std;
class Matrix {
private:
int data[3][3];
public:
Matrix(int arr[3][3]) {
for(int i=0; i<3; i++) {
for(int j=0; j<3; j++) {
data[i][j] = arr[i][j];
}
}
}
void print() {
for(int i=0; i<3; i++) {
for(int j=0; j<3; j++) {
cout << data[i][j] << " ";
}
cout << endl;
}
}
friend bool operator!=(const Matrix& m1, const Matrix& m2) {
for(int i=0; i<3; i++) {
for(int j=0; j<3; j++) {
if(m1.data[i][j] != m2.data[i][j])
return true;
}
}
return false;
}
friend Matrix operator+(const Matrix& m1, const Matrix& m2) {
int arr[3][3];
for(int i=0; i<3; i++) {
for(int j=0; j<3; j++) {
arr[i][j] = m1.data[i][j] + m2.data[i][j];
}
}
return Matrix(arr);
}
friend Matrix operator*(const Matrix& m1, const Matrix& m2) {
int arr[3][3];
for(int i=0; i<3; i++) {
for(int j=0; j<3; j++) {
arr[i][j] = 0;
for(int k=0; k<3; k++) {
arr[i][j] += m1.data[i][k] * m2.data[k][j];
}
}
}
return Matrix(arr);
}
Matrix& operator++() {
for(int i=0; i<3; i++) {
for(int j=0; j<3; j++) {
data[i][j]++;
}
}
return *this;
}
Matrix operator++(int) {
Matrix temp(*this);
operator++();
return temp;
}
};
int main() {
int a1[3][3] = {{1,2,3}, {4,5,6}, {7,8,9}};
int a2[3][3] = {{1,2,3}, {4,5,6}, {7,8,10}};
Matrix m1(a1);
Matrix m2(a2);
if(m1 != m2)
cout << "m1 != m2" << endl;
else
cout << "m1 == m2" << endl;
Matrix m3 = m1 + m2;
m3.print();
Matrix m4 = m1 * m2;
m4.print();
m1.print();
m1++;
m1.print();
++m1;
m1.print();
return 0;
}
```
注意,这只是一个简单的实现,可能并不完善。如果需要更完整的实现,还需要考虑一些边界情况和异常处理。
阅读全文