Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 通过运算符重载实现矩阵乘法_C++ - Fatal编程技术网

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