程序实践系列(六)运算符重载 "+" 和"-"

设计一个时间类CTime

包括时、分、秒等私有数据成员。要求实现时间的基本运算,如一时间加上另一时间、一时间减去另一时间等。

参考程序:

 #include <iostream>
  
 using namespace std;
 
 class CTime 
 { 
 	 int hour;  //时数
	 int minute; //分数  
	 int second;  //秒数
	 
 public: 
 	 CTime() {}     //默认构造函数  
	 CTime(int h =0,int m =0,int s=0):hour(h),minute(m),second(s){}// 重载构造函数
	 
	 void sethour(int h){
		hour  = h;
	 }
	 
	 void setminute(int m){
	 	minute =m;	 	
	 }
	 
	 void setsecond(int s){
    	second = s;
	 } 
	 
	 int gethour(){
	 	return hour;	 	
	 }
	 
	 int getminute(){
	 	return minute;	 	
	 } 
	 
	 int getsecond(){
	 	return second;
	 }
    
	CTime operator+(CTime); 
    CTime operator-(CTime);
    
    void disp(); 
}; 

CTime CTime::operator +(CTime t) 
{
	int carry,hh,mm,ss;  
	ss=getsecond()+t.getsecond();  
	if (ss>60)  {   
		ss-=60;   
		carry=1;     //秒数大于60,则需进一位
	}  
	else    
		carry=0;  
	mm=getminute()+t.getminute()+carry;  
	
	if (mm>60)  {   
		mm-=60;   
		carry=1;  //分数大于60,则需进一位
	}  
	else 
		carry=0;  
	hh=gethour()+t.gethour()+carry;
	  
	if (hh>24)   
		hh-=24;  
	static CTime result(hh,mm,ss);   // 构造一个静态对象result
	return result; 
} 

CTime CTime::operator -(CTime t) {  
	int borrow,hh,mm,ss;  
	ss=getsecond()-t.getsecond();  
	if (ss<0)  {   
		ss+=60;   
		borrow=1;    // 秒数小于0,则需从分数借一位
	}  
	
	else    
		borrow=1;  
	mm=getminute()-t.getminute()-borrow;  
	
	if (mm<0)  {   
		mm+=60;   
		borrow=1; // 分数小于0,则需从分数借一位
	}  
	
	else    
		borrow=0;  
	hh=gethour()-t.gethour()-borrow;  
	
	if (hh<0)
		hh+=24; 
	static CTime result(hh,mm,ss); 
	
	return result; 
 } 
 
 void CTime::disp()  {
 	cout << hour << ":" << minute << ":" << second << endl;  
 } 
 
int  main(void) 
 { 
  CTime now(8,50,40); 
  CTime start(24,55); 
  
  CTime t1=now-start;
  CTime t2=now+start; 
  
  cout << "time 1:";
  now.disp(); 
  cout << "time 2:";
  start.disp(); 
  cout << "time plus: ";
  t1.disp(); 
  cout << "time add: ";
  t2.disp(); 
  
  return 0;
  
 } 

测试结果



关于Image Engineering& Computer Vision更多讨论与交流,敬请关注本博客和新浪微博songzi_tea.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值