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

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;
	}
    上面是一个简单的例子,对于+重载