博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
#C++PrimerPlus# Chapter11_Exersice4_mytimeV4
阅读量:5139 次
发布时间:2019-06-13

本文共 1785 字,大约阅读时间需要 5 分钟。

修改Example10~12,将类定义中的运算符重载都改用友元函数实现。

显然,需要对mytime3.h,mytime3.cpp做修改,而usetime3.cpp不需要修改。

程序清单如下:


// mytime4.h

#ifndef MYTIME3_H_
#define MYTIME3_H_
#include <iostream>
class Time
{
private:
    int hours;
    int minutes;
public:
    Time();
    Time(int h, int m = 0);
    void AddMin(int m);
    void AddHr(int h);
    void Reset(int h = 0, int m = 0);
    friend Time operator+(const Time& t1, const Time& t2);
    friend Time operator-(const Time& t1, const Time& t2);
    friend Time operator*(const Time& t, double n);
    friend Time operator*(double n, const Time& t);
    friend std::ostream& operator<<(std::ostream& os, const Time& t);
};
#endif


// mytime4.cpp

#include <iostream>
#include "mytime4.h"
Time::Time()
{
    hours = 0;
    minutes = 0;
}
Time::Time(int h, int m)
{
    hours = h;
    minutes = m;
}
void Time::AddMin(int m)
{
    minutes += m;
    hours += minutes / 60;
    minutes %= 60;
}
void Time::AddHr(int h)
{
    hours += h;
}
void Time::Reset(int h, int m)
{
    hours = h;
    minutes = m;
}
Time operator+(const Time& t1, const Time& t2)
{
    Time sum;
    sum.minutes = t1.minutes + t2.minutes;
    sum.hours = t1.hours + t2.hours + sum.minutes / 60;
    sum.minutes %= 60;
    return sum;
}
Time operator-(const Time& t1, const Time& t2)
{
    Time diff;
    int tot1, tot2;
    tot1 = t1.hours * 60 + t1.minutes;
    tot2 = t1.hours * 60 + t1.minutes;
    diff.hours = (tot1 - tot2) / 60;
    diff.minutes = (tot1 -tot2) % 60;
    return diff;
}
Time operator*(const Time& t, double n)
{
    Time result;
    long totalminutes = t.hours * 60 * n + t.minutes * n;
    result.hours = totalminutes / 60;
    result.minutes = totalminutes % 60;
    return result;
}
Time operator*(double n, const Time& t)
{
    return t * n;
}
std::ostream& operator<<(std::ostream& os, const Time& t)
{
    os << t.hours << ":" << t.minutes;
    return os;
}


 

结束。

 

 

 

转载于:https://www.cnblogs.com/zhuangdong/archive/2013/05/04/3059954.html

你可能感兴趣的文章
AOSP ON MAKO(在NEXUS 4上刷ANDROID 4.4 源代码包-下载/配置/编译/刷机)
查看>>
nativeXml使用方法
查看>>
LightOJ1074Extended Traffic(bellman_ford最短路+负环标记)
查看>>
Android Studio 编译不通过,报错“找不到org.apache.http
查看>>
SQL Server Failover Cluster (FCI) installations is the failure of the Network Name
查看>>
springmvc集成Freemarke配置的几点
查看>>
自己写的仿爱奇艺综艺频道轮播图,没有淡入淡出效果
查看>>
提炼游戏引擎系列:第一次迭代
查看>>
Django 学习
查看>>
s5-12 RIP
查看>>
Linux-以指定用户运行redis
查看>>
Linux-socket的close和shutdown区别及应用场景
查看>>
初探Oracle全栈虚拟机---GraalVM
查看>>
移动端的点击滚动逻辑实现。
查看>>
xpath
查看>>
parted分区
查看>>
抛出错误
查看>>
Can't play local SWF file in Media Player
查看>>
图片标签img
查看>>
JavaScript语言中文参考手册.chm
查看>>