C++在重载后缀增量运算符时得到一个奇怪的输出



我把所有的东西都放在一个源文件中,并上传到pastebin中以便于调试。

我的问题是后缀增量运算符
在我的输出中,我得到的是:

Preincrement expressions:
(-11 - 2i)
(-117 + 44i)
Postincrement expressions:
(-1.07374e+08 - 1.07374e+08i)
(-1.07374e+08 - 1.07374e+08i)
After postincrement expressions:
(-1199 - 718i)
(-922077 + 1.72176e+06i)

当我期待这个:

Preincrement expressions:
(-11 - 2i)
(-117 + 44i)
Postincrement expressions:
(-11 - 2i)
(-117 + 44i)
After postincrement expressions:
(-1199 - 718i)
(-922077 + 1.72176e+06i)

我得到了一个奇怪的"预增量表达式"输出。在调试过程中,我可以看到存储在临时对象中的值是正确的,直到格式化和输出它们为止

如有任何帮助,我们将不胜感激!

只需删除'&'在返回您的后缀运算符++的类型时:

// h
Complex operator++(Complex &a, int); //Post
// cpp
Complex operator++(Complex &a, int) //Post
{
Complex temp(a.r, a.i);
a.cube(temp);
return temp;
}

Postfix运算符应按值而不是按引用返回对象。否则,您将返回对局部变量的引用,这是不好的做法。

相关内容

最新更新