gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 10:19:38 25 4
gpt4 key购买 nike

我正在编码一个矩阵计算器,并且希望它能够计算如下运算: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;
}

关于c++ - C++中重载运算符的参数顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60793466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com