//FILE:Clock.h //Clock类得声明和实现都在这里.
#pragma once
#include<ctime>
#include<iostream>
using namespace std;
class Clock
{
public:
Clock();
Clock(unsigned int h, unsigned int m, unsigned int s):hour(h),minute(m),second(s){}
void setlocaltime();
void print();
Clock operator +(const Clock& b);
Clock operator -(const Clock& b);
Clock operator +=(const Clock& b);
private:
unsigned int hour;
unsigned int minute;
unsigned int second;
};
inline Clock::Clock()
{
hour = 0;
minute = 0;
second = 0;
}
inline void Clock::setlocaltime()
{
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
time_t t = {};
time(&t);
auto ptminfo = localtime(&t);
this->hour = static_cast<unsigned int>(ptminfo->tm_hour);
this->minute = static_cast<unsigned int>(ptminfo->tm_min);
this->second = static_cast<unsigned int>(ptminfo->tm_sec);
}
inline void Clock::print()
{
cout << hour << ":" << minute << ":" << second << endl;
}
inline Clock Clock::operator+(const Clock& b)
{
Clock r;
r.hour = b.hour + hour;
r.minute = b.minute + minute;
r.second = b.second + second;
return r;
}
inline Clock Clock::operator-(const Clock& b)
{
Clock r;
r.hour = hour - b.hour;
r.minute = minute - b.minute;
r.second = second - b.second;
return r;
}
inline Clock Clock::operator+=(const Clock& b)
{
hour += b.hour;
minute = b.minute;
second = b.second;
return *this;
}
//main.cpp
// OverloadOperator.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
/******************************************************
*Complier:VS2017
*Project:Overloaded Operator 重载运算符
*Author:Rise
*Examination:
*1、
实现一个时钟类,成员变量为时分秒。重载+ += - 三个运算符。
例如
17:17:17 + 0:0:1=17:17:18
17:17:17 += 0:0:1=17:17:18
17:17:17 – 0:0:1 = 17:17:16
*******************************************************/
#include<iostream>
#include"Clock.h"
using namespace std;
int main()
{
Clock a;
Clock b;
a.setlocaltime();
a.print();
b.print();
(a + b).print();
(a - b).print();
a += b;
a.print();
return 0;
}