C ++中重载运算符的参数顺序

马丁·雅库扎

我正在编码一个矩阵计算器,并且希望它能够计算如下运算:2 * A,A * 3(其中A是矩阵)。所以,我这样写:

matrix operator* (double x , matrix mat)
{
    matrix temp(mat.n);

    for (int i = 0; i < mat.n; ++i)
        for (int j = 0; j < mat.n; ++j)
            temp.t[i][j] = mat.t[i][j] * x;

    return temp;
}

matrix operator* (matrix mat, double x)
{
    matrix temp(mat.n);

    for (int i = 0; i < mat.n; ++i)
        for (int j = 0; j < mat.n; ++j)
            temp.t[i][j] = mat.t[i][j] * x;

    return temp;
}

matrix是类的名称,n是大小(矩阵是正方形),t是静态二维数组t [n] [n])

如您所见,我编码了2个完全相同的函数,唯一的区别是参数的顺序。有什么办法可以将它们合并为一个?除了将x转换为对角矩阵并将其乘以2个矩阵外。

(顺便说一下,这是我在这个论坛上的第一篇文章,所以请不要对我提出如此琐碎的问题太苛刻)

艾伦·伯特尔斯

只需使一个函数调用另一个即可:

matrix operator* (double x , matrix mat)
{
    matrix temp(mat.n);

    for (int i = 0; i < mat.n; ++i)
        for (int j = 0; j < mat.n; ++j)
            temp.t[i][j] = mat.t[i][j] * x;

    return temp;
}

matrix operator* (matrix mat, double x)
{
    return x * mat;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章