c++矩阵重载不起作用
c++ matrix overloading not working
无法弄清楚发生了什么。为什么运算符重载在这个代码中不起作用?
class matrix
{
protected:
int matrix1[5][5],matrix2[5][5],resultmatrix[5][5];
int m,n,p,q,i,j,k,l;
public: matrix()
{
}
void getdata();
//double determinat;
matrix operator +(matrix);
void showmatrix();
};
void matrix::getdata()
{
cout<<"n"<<"enter no of rows for matrix1 : "<<"n";
cin>>m;
cout<<"n"<<"enter no of columns for matrix1 : "<<"n";
cin>>n;
cout<<"n"<<"enter no of rows for matrix2 : "<<"n";
cin>>p;
cout<<"n"<<"enter no of columns for matrix2 : "<<"n";
cin>>q;
if(m==p&&n==q)
{
cout<<"n"<<"matrixes can be added"<<"n";
}
else
{
cout<<"n"<<"matrixes can not be added"<<"n";
exit(0);
}
cout<<'n'<<"please provide for matrix1: "<<"n";
for( i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
cin>>matrix1[i][j];
}
}
cout<<'n'<<"please provide for matrix2: "<<"n";
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
cin>>matrix2[i][j];
}
}
}
matrix matrix::operator+( matrix matrixobj)
{矩阵tempmatrixobj;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
matrixobj.resultmatrix[i][j]=
tempmatrixobj.matrix1[i][j]+tempmatrixobj.matrix2[i][j];
}
}
return matrixobj;
//return tempmatrixobj;
//return*this;
}
void matrix::showmatrix()
{
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
cout<<resultmatrix[i][j]<<"t";
}
cout<<"n";
}
}
int main()
{
matrix matrixobj1,matrixobj2;
matrix resultmatrix;
matrixobj1.getdata();
matrixobj2.getdata();
resultmatrix=matrixobj1+matrixobj2;
resultmatrix.showmatrix();
return 0;
}
代码的加法部分根本不起作用,它为每个矩阵取两次值,然后只输出一些内存地址。
输出:
为matrix1:
输入行数3
为matrix1:
输入列数3
为matrix2:
输入行数3
为matrix2:
输入列数3
可以添加矩阵
请提供矩阵1:
1 1 1
1 1 1
1 1 1
请提供矩阵2:
1 1 1
1 1 1
1 1 1
为matrix1:
输入行数2
为matrix1:
输入列数2
为matrix2:
输入行数2
为matrix2:
输入列数2
可以添加矩阵
请提供矩阵1:
1 1
1 1
请提供矩阵2:
1 1
1 1
-1717986920-1717986920
-1717986920-1717986920
按任意键继续。
添加的代码
matrixobj.resultmatrix[i][j]=tempmatrixobj.matrix1[i] [j]+tempmatrixobj.matrix2[i][j];
将来自tempmatrixobj
而不是来自参数的值添加到operator+
。
相关文章:
- 重载运算符 (<<) cout 在 c ++ 中不起作用,当我互相减去两个矩阵时不起作用
- 为什么重载运算符>在参数声明 const 时不起作用?
- 重载"+="运算符:c+=a_times_b 有效,但 c+=a*b 不起作用?
- = 重载不起作用
- 类中的重载函数(Students())是输出输入的信息,但它不起作用
- 为什么 SFINAE 在这个简单的成员函数重载中不起作用
- C++ 运算符重载 += 有效,但<<不起作用
- 需要使用 Book* 头变量重载运算符,但不起作用
- C++ 运算符删除重载对派生类不起作用
- 为什么重载运算符上的异常说明符'<<'不适用于任何 std::ostream 对象,但对库中定义的运算符不起作用?
- 运算符重载如何工作,为什么在我的情况下不起作用?
- 为什么重载运算符不起作用?
- 重载'='不起作用
- 二叉搜索树<<运算符重载不起作用
- 重载运算符<<不起作用
- 重新赋值在运算符中不起作用 = 重载
- 类构造函数重载不起作用
- c++中的函数重载不起作用
- 为什么 [] 的重载函数在这里不起作用?
- 如果重载函数仅被部分重写,则多态性不起作用