通过运算符重载的矩阵乘法

时间:2015-11-20 18:54:33

标签: 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;           
            for(int k=0;k<n1;k++)
            {
                c.a[i][j]+=(a[i][k]*x.a[k][j]);       
            }   
        } 
    } 
    return c; 
}

1 个答案:

答案 0 :(得分:-1)

对于两个矩阵,您可以使用成员一元运算符* =,即:

matrix & operator *= (matrix  const & q)
{
    // ... your code to multiply "this" by q...

    return *this;
}

或非成员二元运算符:

matrix operator * (matrix p, matrix const & q)
{
    return p *= q;
}