【问题标题】:comma operator in c++C++中的逗号运算符
【发布时间】:2013-06-15 09:15:18
【问题描述】:

下面是代码。

#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
请解释为什么该行 x t=(a,b,c,d); 中的值不是 4;

【问题讨论】:

  • 来吧,你在这里已经够久了,知道如何格式化代码......
  • 请告诉我该怎么做..
  • @akash 我已经更新了格式。您可以使用“编辑”选项查看当前内容或单击“已编辑 [时间]”链接查看差异。或者尝试自己编辑并使用“{ }”图标。

标签: c++ class operator-overloading output


【解决方案1】:
x t = (a,b,c,d);

无论此表达式的求值顺序如何,始终会返回最左侧的操作数,因为您的x&amp; operator , (x &amp;instance) 中的this 指的是左侧操作数,而instance 指的是右侧操作数。

它因此返回a,而您得到的打印值为1

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

【讨论】:

    猜你喜欢
    • 2017-07-11
    • 2010-12-16
    • 1970-01-01
    • 2018-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-30
    相关资源
    最近更新 更多