我有Mtx
在矩阵之间进行一些计算
Mtx M1(rows1,cols1,1); //instantiate data members and fill the matrix with 1s
Mtx M2(rows2,cols2,2); //instantiate data members and fill the matrix with 2s
Mtx M3(rows3,cols3,0); //instantiate data members and fill the matrix with 0s
M3 += M1; //+= is overloaded - First M3
M3 -= M2; //-= is overloaded - Second M3
第一个M3
需要填充零的M3
并将其添加到M1
,答案将分配给M3
。我在这里没问题。
问题在于第二个M3
!它不会减去填充零的M3
,而是使用上一个操作的结果并从M2
中减去它。
如何使M3
静态保持其值?它与静态对象有关吗?
我希望你明白我的观点!
感谢您的帮助......
答案 0 :(得分:5)
这是因为您使用的是 +=
运算符。您将 新值分配给左侧的对象。
当您使用+=
时,您正在更改M3的值。
你想要的是这个:
Mtx M4 = M3 + M1;
Mtx M5 = M3 - M2;
甚至更好:
const static Mtx ZERO_MTX(rows3,cols3,0);
Mtx M4 = ZERO_MTX + M1;
Mtx M5 = ZERO_MTX - M2;