1

下面是代码。

#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 xt=(a,b,c,d);

4

1 回答 1

2
x t = (a,b,c,d);

不管这个表达式的求值顺序是什么,最左边的操作数总是会被返回,因为this在你x& operator , (x &instance)指的是左边的操作数,而instance指的是右边的操作数。

它因此返回a,您将获得1.

如果您没有重载逗号运算符,您可能会得到4,因为表达式 like(a, b, c)将返回最右边的操作数。

于 2013-06-15T09:29:57.853 回答