• c++修饰符重载


    主要有两种方式:利用友元、类成员方法。

    #include <iostream>
    using namespace std;
    
    /**
    *演示修饰符重载
    *一般都用成员方法重载
    *特殊的没有办法修改核心库的用友元的方法来重载 例如<<
    */
    class Chicken
    {
    private:
        int weight;
    public:
        Chicken(int weight)
        {
            this->weight = weight;
        }
        ~Chicken()
        {
            delete this;
        }
        int getWeight();
        void setWeight(int weight);
        friend int operator +(Chicken & a,Chicken & b);
        int operator -(Chicken & a);
        friend int operator ++(Chicken & a);
        int operator --();
        friend int operator ++(Chicken & a,int);
        int operator --(int);
        friend ostream & operator << (ostream & out,Chicken & a);
    };
    
    int Chicken::getWeight()
    {
        return this->weight;
    }
    
    void Chicken::setWeight(int weight)
    {
        this->weight = weight;
    }
    
    int operator +(Chicken & a,Chicken & b)
    {
        return a.weight+b.weight;
    }
    
    int Chicken::operator -(Chicken & a)
    {
        return this->weight-a.weight;
    }
    
    int operator ++(Chicken & a)
    {
        a.weight ++;
        return a.weight;
    }
    
    int Chicken::operator --()
    {
        this->weight --;
        return this->weight;
    }
    
    int operator ++(Chicken & a,int)
    {
        int b = a.weight;
        a.weight ++;
        return b;
    }
    
    int Chicken::operator --(int)
    {
        int b = this->weight;
        this->weight --;
        return b;
    }
    
    ostream & operator << (ostream & out,Chicken & a)
    {
        cout << "The weight is: " << a.weight;
        return out;
    }
    
    
    int main()
    {
        Chicken a(20);
        Chicken b(10);
        cout << a.getWeight() << endl;
        cout << b.getWeight() << endl;
        cout << a-b << endl;
        cout << a+b << endl;
        cout << ++a << endl;
        cout << a.getWeight() << endl;
        cout << --a << endl;
        cout << a.getWeight() << endl;
        cout << a++ << endl;
        cout << a.getWeight() << endl;
        cout << a-- << endl;
        cout << a.getWeight() << endl;
        cout << a << endl;
        return 0;
    }
  • 相关阅读:
    flutter 刷新和初始化
    flutter 复杂数据模型 转换
    flutter 刷新组件
    flutter wrap 流式布局
    添加横纵布局 和 页面保活
    跳转首页结构并且加载launch插件
    迟到的AFO
    [ELSE]自闭选手的自我修养
    [题解]UOJ#41 矩阵变换
    [题解]HDU 3555 Bomb
  • 原文地址:https://www.cnblogs.com/godehi/p/8932011.html
Copyright © 2020-2023  润新知