这个是我重载的+
在C++中,对于一个类的重载运算符,包括重载的"+"运算符,都可以返回一个值,但是这个返回值并不是一个左值。因此,对于链式结构,在重载后的"+"运算符中返回的是一个新的链式结构对象,而不是原始的对象本身。
因此,不能直接使用重载后的"="运算符来赋值新的链式结构对象,因为在这种情况下,重载后的"="运算符期望的是左值,但是重载后的"+"运算符返回的是右值。
为了解决这个问题,可以在链式结构类中定义一个特殊的函数,比如"copyFrom()"函数,来完成新对象的赋值。这个函数接受一个右值作为参数,并将其赋值给当前对象。例如:
class LinkedList {
// ...类定义...
public:
LinkedList& operator+(const LinkedList& other) const {
LinkedList result = *this; // 创建一个新对象
// 在新对象上执行加法操作
// ...
return result;
}
void copyFrom(const LinkedList& other) {
// 执行深拷贝操作
// ...
}
};
然后,可以使用以下代码进行链式结构对象的赋值:
LinkedList a, b, c;
// 假设已经将元素添加到了 a 和 b 中
c.copyFrom(a + b); // 赋值新的链式结构对象
这样,就可以通过在链式结构类中定义一个特殊的函数来解决赋值问题。
#include<bits/stdc++.h>
#define INF 0x3f3f3f3f3f3f3f3f
#define mod 1000000007
#define IOS ios::sync_with_stdio(false)
#define endl '\n'
using namespace std;
typedef long long ll;
const int maxn = 1e5 + 10;
int n, m, p;
int a[maxn][maxn], b[maxn][maxn], c[maxn][maxn];
int main()
{
cin >> n >> m >> p;//第一个矩阵为n行m列 第二个矩阵为m行p列 最终结果为n行p列的矩阵
for (int i = 1;i <= n;++i) {
for (int k = 1;k <= m;++k) {
for (int j = 1;j <= p;++j) {
c[i][j] += a[i][k] * b[k][j];
}
}
}
return 0;
}
```cpp