zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    移动端工作心得
    小程序初探
    你可能会用到的"奇技赢巧"
    一个知乎日报pwa
    Progressive Web Applications
    Java中的基本数据类型以及装箱、拆箱
    用sql获得指定记录的空段数目和字段名称--实在想不通,这种场景应用在哪
    putIfAbsent,一个字段为空的话,将该字段设置为指定值
    PO、VO、BO、POJO、DAO、DTO都是什么对象
    Java中字符串连接符(+)和append的区别
  • 原文地址:https://www.cnblogs.com/godehi/p/8932011.html
Copyright © 2011-2022 走看看