运算符重载

运算符重载


开发工具与关键技术:C++、VisualStudio

作者:张国军

撰写时间:2019年04月10日

运算符重载的作用是是我们自定义类型数据更为方便使用,当我们使用自定义类型的时候,如果没用到运算符重载,我们进行输出的时候编译器会给我们报错的,就如下边的图一样

在这里插入图片描述

我自定义了一个类,声明了一个v对象,当我想要进行输出的时候,我们进行输出不了,会报错。当我们有写运算符重载的时候呢,那么我们可以直接进行输出了。

ostream& operator<<(ostream&out, Square&a) {

    out << a.length;

    return out;

}

然后我们就可以输出我们想要的东西了;

当然,我们的运算符重载还有很多其他的运算符重载,当我们需要用的时候那么我们可以去相对应的重载运算符。

那么我们下边来看一个简单的例子。

#include <iostream>

using namespace std;

class staff

{

public:

    staff(int i=100);

    ~staff();

    friend staff operator+(staff&, staff&);

    friend staff operator-(staff&, staff&);

    friend staff operator*(staff&, staff&);

    friend staff operator/(staff&, staff&);

    staff operator=(staff&);

    staff operator++();

    staff operator++(int);

    staff operator--();

    staff operator--(int);

    friend ostream& operator<<(ostream&, staff&);

    friend istream& operator>>(istream&, staff&);

private:

    double SumSalary;

    double Salary;

};

 

staff::staff(int i)

{

    Salary = i;

    SumSalary = 0;

}

staff::~staff()

{

    if (SumSalary == 0) {

        cout << "解雇成功:";

    }

    else {

        cout << "此员工还有" << Salary << "工资没结,请尽快结完。";

    }

}

staff operator+(staff&a, staff&b) {

    staff temp;

    temp.Salary = a.Salary + b.Salary;

    return temp;

}

staff operator-(staff&a, staff&b) {

    staff temp;

    temp.Salary = a.Salary + b.Salary;

    return temp;

}

staff operator*(staff&a, staff&b) {

    staff temp;

    temp.SumSalary = a.SumSalary * b. Salary;

    return temp;

}

staff operator/(staff&a, staff&b) {

    staff temp;

    temp.SumSalary = a.SumSalary / b. Salary;

    return temp;

}

staff staff::operator=(staff&a) {

    SumSalary = a.SumSalary;

    Salary = a.Salary;

    return *this;

}

staff staff::operator++() {

    Salary++;

    return *this;

}

staff staff::operator++(int) {

    staff temp;

    temp.Salary=Salary++;

    return temp;

}

staff staff::operator--() {

    Salary--;

    return *this;

}

staff staff::operator--(int) {

    staff temp;

    temp.Salary = Salary--;

    return temp;

}

ostream& operator<<(ostream&cout, staff&a) {

    cout << "总工资为:" << a.SumSalary << "日薪为:" << a.Salary << "/天";

    return cout;

}

istream& operator>>(istream&cin, staff&a) {

    cin >> a.Salary;

    return cin;

}

void main() {

    staff a, b = 110;

    cout << a <<"\t"<< b;

}

我这个例子是一个临时工的工资登记信息,Salary是工作一天的工资,我给它默认值为100元一天,一个对象就相当于我们一个员工,当我们需要计算员工工资的时候,那么我们可以通过运算符重载进行计算。

由于我的电脑运行有点问题,所以没有运行结果,大概思路也是这样的,所以各位有什么问题,可以留言评论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值