C++ 是语句值+;=我与value=value+完全相同;我

C++ 是语句值+;=我与value=value+完全相同;我,c++,operator-overloading,C++,Operator Overloading,除了编辑器中的额外空间之外,这两个语句之间有什么区别吗 编辑:谢谢你的回答。我还想知道编译器是如何计算每条语句的。否-对于任何其他pod,运算符可能会过载 您希望任何合理的实现都能使这些操作相同,但这取决于开发人员,而不是编译器 您可以想象,当人们重载操作符时,会出现更微妙的问题,例如(A==B)与(B==A)否-对于任何其他pod,操作符都可能重载 您希望任何合理的实现都能使这些操作相同,但这取决于开发人员,而不是编译器 您可以想象,当人们重载运算符时,会出现更微妙的问题,例如(A==B)与(

除了编辑器中的额外空间之外,这两个语句之间有什么区别吗


编辑:谢谢你的回答。我还想知道编译器是如何计算每条语句的。

否-对于任何其他pod,运算符可能会过载

您希望任何合理的实现都能使这些操作相同,但这取决于开发人员,而不是编译器


您可以想象,当人们重载操作符时,会出现更微妙的问题,例如
(A==B)
(B==A)

否-对于任何其他pod,操作符都可能重载

您希望任何合理的实现都能使这些操作相同,但这取决于开发人员,而不是编译器


您可以想象,当人们重载运算符时,会出现更微妙的问题,例如
(A==B)
(B==A)
不同是的,它们是相同的。编译器很可能会为这两种代码生成相同的代码


当然,除非一个或两个操作符都过载。这就是为什么有些人不赞成运算符重载。

是的,它们是相同的。编译器很可能会为这两种代码生成相同的代码


当然,除非一个或两个操作符都过载。这就是为什么有些人不赞成运算符重载。

是的,可能存在差异。一些对象,例如,定义增量运算符(
x++
++x
),但不定义
运算符+=
。有些对象,如
string
,定义
运算符+=
,但不定义增量。但是,一般来说,如果
x++=1
++x
x++
都被定义,它们将做相同的事情。

是的,可能会有差异。一些对象,例如,定义增量运算符(
x++
++x
),但不定义
运算符+=
。有些对象,如
string
,定义
运算符+=
,但不定义增量。但是,一般来说,如果
x++=1
++x
x++
都被定义,它们将做同样的事情。

即使对于豆荚,它们也不完全相同;区别很小,但您的编译器编写人员可能会提醒您注意后者,但不会注意前者:

char ch = get_a_character();
++ch;
ch = ch + 1; // narrowing conversion

即使是豆荚,它们也不完全相同;区别很小,但您的编译器编写人员可能会提醒您注意后者,但不会注意前者:

char ch = get_a_character();
++ch;
ch = ch + 1; // narrowing conversion

我想你的意思是,POD的
value+=1
value=value+I
(比如
int
double
),它们的计算结果与你预期的一样:相同。对于其他任何内容,它们都由函数进行计算,例如
operator+(MyClass值,int i)
operator+=(MyClass值,int i)
。因此,发生什么取决于开发人员如何编写这些函数。任何明智的人都会确保他们“工作正常”——但也可能有错误。我建议你看一看或更准确的描述。如果你不是字面上的意思,
,那么就有明显的区别。考虑<代码> *f*)= *< +代码>与<代码> *f*(+= i < /代码>)。欢迎使用。编辑您的问题以添加更多问题不是一个好的做法;事实上,您的编辑也已得到答复。我想你的问题已经回答了,所以请选择一个答案,谢谢!我想你的意思是,POD的
value+=1
value=value+I
(比如
int
double
),它们的计算结果与你预期的一样:相同。对于其他任何内容,它们都由函数进行计算,例如
operator+(MyClass值,int i)
operator+=(MyClass值,int i)
。因此,发生什么取决于开发人员如何编写这些函数。任何明智的人都会确保他们“工作正常”——但也可能有错误。我建议你看一看或更准确的描述。如果你不是字面上的意思,
,那么就有明显的区别。考虑<代码> *f*)= *< +代码>与<代码> *f*(+= i < /代码>)。欢迎使用。编辑您的问题以添加更多问题不是一个好的做法;事实上,您的编辑也已得到答复。我想你的问题已经回答了,所以请选择一个答案,谢谢!我认为这是一个颇具争议的声明:我不相信大多数C++代码在野生(没有双重检查)-但是我会说你可以信任任何内置类型或质量库。我会说这是一个颇具争议的声明:我不相信大多数C++代码在野外(没有双重检查)。-但我想说,您可以信任任何内置类型或高质量的库。