以下是代码。
#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;
}
输出 value is 1
请解释为什么该行中的值不是4 x t =(a,b,c,d);
答案 0 :(得分:2)
x t = (a,b,c,d);
无论评估此表达式的顺序如何,最左侧的操作数将始终返回,因为this
中的x& operator , (x &instance)
指的是左操作数,而instance
指的是右边的操作数
因此返回a
,您的打印值为1
。
如果您没有重载逗号运算符,则可能会得到4
,因为(a, b, c)
之类的表达式将返回最右侧的操作数。