zoukankan      html  css  js  c++  java
  • [C++]operator难点、豆知识

    operaotr除了用于重载=、>、<之类的东西外,还有以下用途

    1. 类型转换

    class T
    {
    public:
        operator int() const
        {
            return 5;
        }
    };

    上述的代码,为T类提供了转换为int的能力。默认隐式使用。注意使用了const,保证可靠性。

    T t = T();
    int i = t;
    cout << i << endl; // 输出5

    2. 赋值运算重载

    class T
    {    
    public:
        int _val;
        T(int val): _val(val){}
        void operator=(const T& t)
        {
            cout << "using operator=" << endl;
            _val = t._val;
        }
        operator int() const
        {
            return _val;
        }
    };
    
    int main()
    {
        // t1 构造函数初始化
        T t1 = T(1);
        // t2 使用了拷贝构造函数初始化
        T t2 = t1;
        // t3 初始化后,使用赋值语句
        T t3 = T(3);
        t3 = t1;
    
        int i1 = t1;
        int i2 = t2;
        int i3 = t3;
        cout << i1 << i2 << i3 << endl;
    
        system("pause");
    }

    可以重载operator=运算符,来实现类的赋值。但是不能实现级联赋值t3 = t2 = t1,需要修改operator=为

    T& operator=(const T& t)
    {
        cout << "using operator=" << endl;
        _val = t._val;
        return *this;
    }
  • 相关阅读:
    [IOI1994][USACO1.5]数字三角形 Number Triangles
    和为给定数
    小凯的疑惑
    棋盘
    【2020NOI.AC省选模拟#2】C. 送分题
    【NOI OL #2】涂色游戏
    【NOI OL #3】小结
    【NOI OL #1】最小环
    【NOI OL #1】冒泡排序
    【NOI OL #1】序列
  • 原文地址:https://www.cnblogs.com/SelaSelah/p/2468502.html
Copyright © 2011-2022 走看看