zoukankan      html  css  js  c++  java
  • 逗号操作符重载

    逗号操作符语义:

      1.将多个子表达式连接为一个表达式,整个表达式的值是最后一个表达式的值。

      2.前n-1个表达式可以没有返回值。

      3.从左到右计算每个子表达式的值。

     

    逗号操作的重载:

      1.使用全局函数对逗号操作符进行重载。

      2.重载函数参数必须有一个是类类型。

      3.重载函数返回值类型必须是引用。

    Class& operator , (const Class& a,const Class& b )
    {
        return const_cast<Class&>(b);
    }

     逗号表达式的重载:

    #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);
    }
    
    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(t1);   
        cout << tt.value() << endl; // 1   
        return 0;
    }
  • 相关阅读:
    Angular 学习笔记 (消毒 sanitizer)
    资源链接
    QM作品
    读书笔记
    javascript jQuery遇到的小问题 不定添加
    css 平时遇见CSS的一些小技巧 不定添加
    html 小却重要的问题 不定添加
    Array 对象
    test
    Javascript定义类(class)的三种方法
  • 原文地址:https://www.cnblogs.com/zsy12138/p/10839897.html
Copyright © 2011-2022 走看看