c++ - C++中的逗号运算符

标签 c++ class operator-overloading output

下面是代码。

#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/

相关文章:

php - MySQLi 的正确使用

python - 在类外部定义的函数的范围是什么?

c++ - 使用带有可变参数模板函数的 decltype 的尾随返回类型

c++ - 嵌套类型作为函数参数

c++ - 使用 fstream 以中文/日文编写的文本,无法正确读取文件

c++ - Allegro 中的相等运算符重载

c++ - 将赋值运算符标记为左值是否会提高安全性?

c++ - 使用 zlib 的 gzip 文件访问功能的未压缩文件大小

c++ - 将项目添加到队列

c# - 如何覆盖 &&(逻辑和运算符)?