下面是代码。
#include<iostream>
using namespace std;
class x {
int a;
public :
x(int t=2):a(t) {}
void print (){
cout <<"value is "<<a;
}
x& operator,(x&a){
return *this;
}
};
int main(){
x a(1),b(2),c(3),d(4);
x t=(a,b,c,d);
t.print();
return 0;
}
输出 值为1
请解释为什么这一行的值不是 4 x t=(a,b,c,d);
最佳答案
x t = (a,b,c,d);
无论此表达式的计算顺序如何,最左边的操作数将始终返回,因为 x& operator 中的
指的是左操作数,而 this
, (x &instance)instance
指的是右操作数。
它因此返回 a
并且您得到打印值 1
。
如果您没有重载逗号运算符,您可能会得到 4
,因为像 (a, b, c)
这样的表达式将返回最右边的操作数。
关于c++ - C++中的逗号运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17122025/