int a = 1; int c = (a*=2) + (a+=3); printf("a = %d, c = %d\n", a, c); return 0; } 如果赋值运算符返回左值的值的话,(a*=2)和(a+=3)应该返回2和5,那么结果应该是a = 5, c = 7。如果是这样,后面也不用写了。事实上结果让我吃了一惊,这个例子的结果如下: a = 5, c...
返回值不是引用时,将返回一个临时对象(const Class 型),这时你=的重载函数的形参类型是const Class&型的,可以接受const Class型,所以进行连续的赋值运算是正确的,可见返回值类型引用与否不影响连续赋值。 三、赋值运算符重载函数要避免自赋值 对于赋值运算符重载函数,我们要避免自赋值情况(即自己给自己赋值)的发生,...
其实C语⾔的赋值运算符会返回左值的地址⽽不是值,上⾯的代码就相当于在a*=2,和a+=3执⾏完后将两个a相加。下⾯再来看⼀个例⼦ #include <stdio.h> int main(){ int a = 1;printf("%d, %d, a = %d\n", (a*=2), (a+=3), a);return 0;} 这个例⼦会输出什么呢?5, 5, ...