c++ - += C++ 中的运算符

标签 c++ operators

请告诉我以下添加两个数据类型 int 变量的代码之间的区别。我想知道哪个更好。

代码 A:

sum = sum + value;

代码 B:

sum += value;

我们通常更喜欢 ++ 运算符而不是 += 1。这背后还有什么具体原因吗?

我想知道上述代码在约定或效率水平方面的区别。推荐哪一个?

最佳答案

虽然 e.g. 的最终结果someVar++ 操作符与 someVar += 1 相同,还有其他的东西在起作用。

让我们做一个简单的陈述

foo = bar++;

实际上等价于(但不等于)

temp = bar;
bar += 1;
foo = temp;

至于前缀和后缀递增或递减运算符,它们有不同的operator precedence ,这将影响使用这些运算符的指针算术之类的东西。


至于区别

foo += 1;

foo = foo + 1;

原始类型(如 intfloat)或指针类型没有区别,但如果 foo 是具有运算符重载的对象。那么

foo += 1;

等于

foo.operator+=(1);

同时

foo = foo + 1;

等于

temp = foo.operator+(1);
foo.operator=(temp);

语义上有很大的不同。实际上也是如此,尤其是如果任何运算符重载函数有副作用,或者如果复制构造函数或析构函数有一些副作用(或者你忘记了 the rules of three, five or zero)。

关于c++ - += C++ 中的运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34465848/

相关文章:

c++ - 关于 C++ 运算符的基本问题?

c++ - const 关键字在运算符定义中的作用是什么?

c++ - 您如何调用位于类及其基类之间的接口(interface)?

c++ - fstream 文件 ("arr.txt") 在 Ubuntu14.04 上引发错误 "corrupted double-linked list, Aborted"但在 Windows 7 上运行良好

c++ - 为什么同一内核(超线程)中的两个线程比两个内核的 L1 写访问权限更差?

r - 在 if 语句中比较两个向量

c++ - 编译器错误 "character constant too long for its type"。怎么了?

c++ - 使用 Visual Studio 在调试期间导出数组内容

c++ - 为什么此代码不起作用(请参阅详细信息)?

php - PHP中的百分号是什么意思?