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;
    }
  • 相关阅读:
    2.2 整数表示
    2.1 信息存储
    c++ string.erase()函数的使用
    classmethod修饰符
    27. 序列化
    26. 操作文件目录
    Java 内部类
    ConcurrentHashMap 源码解析 -- Java 容器
    Storm中的LocalState 代码解析
    Java中 return 和finally
  • 原文地址:https://www.cnblogs.com/zsy12138/p/10839897.html
Copyright © 2011-2022 走看看