C++ primer(十一)--运算符重载、友元函数、转换、重载<<运算符

一、运算符重载

在上一文章中介绍了C++是如何使用户能够定义多个名称相同但特征表(参数列表)不同的函数的。这被称为函数重载或函数多态,旨在能够用同名的函数来完成相同的基本操作,即使这种操作被用于不同的数据类型。

    operator+()重载+运算符,operator*()重载*运算符。

二、一个例子说明

mytime.h
#ifndef MYTIME_H_
#define MYTIME_H_
class Time
{
    private:
        int hours;
        int minutes;
    public:
        Time();
        Time(int h,int n=0);
        void Addmin(int m);
        void Addhr(int n);
        void Reset(int h=0,int m=0);
        Time Sum(const Time & t)const;
        void Show()const;
        Time operator+(const Time & T)const;    
    };
#endif

#include <iostream>
#include "mytime.h"
Time::Time()
{
	hours=minutes=0;
	}
Time::Time(int h,int n)
{
	hours=h;
	minutes=n;
	}
void Time::Addmin(int m)
{
	minutes+=m;
	hours+=minutes/60;
	minutes%=60;
	}
void Time::Addhr(int n)
{
	hours+=n;
	}
void Time::Reset(int h,int m)
{
	hours=h;
	minutes=m;
	
	}
Time Time::Sum(const Time & t)const
{
	Time sum;
	sum.minutes=minutes+t.minutes;
	sum.hours=hours+t.hours+sum.minutes/60;
	sum.minutes%=60;
	return sum;
	}
void Time::Show()const
{
	std::cout<<hours<<"hours,"<<minutes<<" minutes";
	}
 Time Time::operator+(const Time & t)const
{
    Time sum;
    sum.minutes=minutes+t.minutes;
    sum.hours=hours+t.hours+sum.minutes/60;
    sum.minutes%=60;
    return sum;
    }

#include <iostream>
#include "mytime.h"
using namespace std;
int main()
{
	Time plan;
	Time coding(2,40);
	Time fixing(5,55);
	Time total;
	cout <<"plan time =";
	plan.Show();
	cout<<endl;
	}

#include <iostream>
#include "mytime.h"
using namespace std;
int main()
{
	Time plan;
	Time coding(2,40);
	Time fixing(5,55);
	Time total;
	total=coding+fixing;
	cout <<"total time =";
	total.Show();
	cout<<endl;
	}
    上面是一个简单的例子,对于+重载

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值