C++ 通过运算符重载实现矩阵乘法
这段代码显示了我运行它时的地址,而不是两个矩阵的乘法C++ 通过运算符重载实现矩阵乘法,c++,C++,这段代码显示了我运行它时的地址,而不是两个矩阵的乘法 matrix matrix:: operator *(matrix x) { matrix c(m1,n2); c.m=c.n=m; for(int i=0;i<m1;i++) { for(int j=0;j<n2;j++) { c.a[i][j]=0;
matrix matrix:: operator *(matrix x)
{
matrix c(m1,n2);
c.m=c.n=m;
for(int i=0;i<m1;i++)
{
for(int j=0;j<n2;j++)
{
c.a[i][j]=0;
for(int k=0;k<n1;k++)
{
c.a[i][j]+=(a[i][k]*x.a[k][j]);
}
}
}
return c;
}
矩阵::运算符*(矩阵x)
{
矩阵c(m1,n2);
c、 m=c.n=m;
对于(int i=0;i两个矩阵,可以使用成员一元运算符*=,即:
matrix & operator *= (matrix const & q)
{
// ... your code to multiply "this" by q...
return *this;
}
或非成员二进制运算符:
matrix operator * (matrix p, matrix const & q)
{
return p *= q;
}
此代码没有输出任何内容。请详细说明发生了什么,并提供一个什么是m1和n2?我希望您打算m
和x.n
,那么矩阵的构造函数应该设置c.m
和c.n
,这样您就不想立即攻击它们。您的设计效率很低。也许吧你不在乎做真正有效所需要的困难的事情。但至少做一些琐碎的事情来避免过度的低效:签名应该是matrix:operator*(matrix const&x)const