39-逗号操作符的分析

来源:互联网 发布:男博导女博士知乎 编辑:程序博客网 时间:2024/06/05 21:24

1、逗号操作符

这里写图片描述

#include <iostream>#include <string>using namespace std;void func(int i){    cout << "func() : i = " << i << endl;}int main(){       int a[3][3] = {        (0, 1, 2),        (3, 4, 5),        (6, 7, 8)    };    int i = 0;    int j = 0;    while( i < 5 )            func(i),    i++;    for(i=0; i<3; i++)    {        for(j=0; j<3; j++)        {            cout << a[i][j] << endl;        }    }    (i, j) = 6;    cout << "i = " << i << endl;    cout << "j = " << j << endl;    return 0;}func() : i = 0func() : i = 1func() : i = 2func() : i = 3func() : i = 4258000000i = 3j = 6

2、重载逗号操作符

这里写图片描述

#include <iostream>#include <string>using namespace std;class Test{    int mValue;public:    Test(int i)    {        mValue = i;    }    int value()    {        return mValue;    }};/*Test& operator , (const Test& a, const Test& b){    return const_cast<Test&>(b);//去除const的属性,返回值非const}*/Test func(Test& i){    cout << "func() : i = " << i.value() << endl;    return i;}int main(){       Test t0(0);    Test t1(1);    //使用自定义逗号操作符重载 Test tt = (func(t0), func(t1)); ==>Test tt = (operator,(func(t0), func(t1)));    //实际是调用函数实现,参数调用顺序跟参数调用约定有关    Test tt = (func(t0), func(t1));   // Test tt = func(t1);    cout << tt.value() << endl; // 1    return 0;}1、重载逗号操作符结果:不能从左到右依次调用,实质上是调用operator,(func(t0),func(t1))函数func() : i = 1func() : i = 012、不重载操作符结果(使用系统提供的逗号):能够实现原声语意,从左到右依次调用(func(t0),func(t1))func() : i = 0func() : i = 11

3、

这里写图片描述

这里写图片描述

4、小结

这里写图片描述

原创粉丝点击