C ++中的静态对象

时间:2012-07-25 05:14:31

标签: c++ object

我有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静态保持其值?它与静态对象有关吗? 我希望你明白我的观点!

感谢您的帮助......

1 个答案:

答案 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;