你好,我想在左邊乘一個數字矩陣,例如: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