你好,我想在左边乘一个数字矩阵,例如:N = a * M其中a是数字。“基本”类的运算符重载
如果我想在右边乘,我会简单地重载我的矩阵类中的运算符*。 但是在这种情况下我应该怎么做?我是否可以重载float的操作符*,即使它是“默认”类? (我甚至不知道它是一个类)
你好,我想在左边乘一个数字矩阵,例如:N = a * M其中a是数字。“基本”类的运算符重载
如果我想在右边乘,我会简单地重载我的矩阵类中的运算符*。 但是在这种情况下我应该怎么做?我是否可以重载float的操作符*,即使它是“默认”类? (我甚至不知道它是一个类)
你将不得不定义函数的另一方面。例如:
Matrix operator *(float x, Matrix const& m)
{
return m * x;
}
重载*运算符在乘以常数后返回矩阵。
matrix matrix :: operator* (int a)
{
matrix temp(x, y);
int num,num1, num2;
A = new int *[temp.x];
for (num=0; num<=temp.x; num++)
{
A[num] = new int [temp.y];
}
for (num1=0; num1<temp.x; num1++)
{
for (num2=0; num2<temp.y; num2++)
{
temp.A[num1][num2] = 0;
}
}
int i, j;
for (i = 0; i < x; i++)
{
for (j = 0; j < y; j++)
{
temp.A[i][j] = a * A[i][j];
}
}
return (temp);
}
这不是他要求的。他想要联想算术。 – 0x499602D2 2013-05-12 18:32:05
所以我可以重载操作者的类定义之外?那很棒 ! – user2370139 2013-05-12 18:21:34
@ user2370139是的,这是一个全球运营商的定义。但是至少有一个操作数必须是类类型的。 – 0x499602D2 2013-05-12 18:23:06
不应该返回值应该是矩阵吗? – shivakumar 2013-05-12 18:29:35