| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 237 人关注过本帖
标题:运算符重载
只看楼主 加入收藏
停停停
Rank: 1
来 自:上海 黄埔
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-4-11
收藏
 问题点数:0 回复次数:0 
运算符重载
关于运算符重载  
Time类进行修改,通过重载“+”、“-”运算符直接进行时间的加减运算。
提示:
(1)用友元函数来实现运算符的重载
(2)加法运算符可以是两个Time对象进行相加,也可以是一个表示秒数的int型数据加上一个Time对象,可以是Time对象加上int型数据,得到的结果都是Time类型的对象。
(3)减法运算符可以是两个Time对象进行相减,也可以是Time对象减去一个表示秒数的int型数据,得到的结果都是Time类型的对象。
主函数设计如下:
int main()
{
  Time t1(2,34),t2,t3;
  t2.SetTime(13,23,34);
  cout<<"\nt1+t2:";
  t3=t1+t2;  //两个Time类对象相加
  t3.print_24();
  cout<<"\nt1+65:";
  t3=t1+65;  //Time类对象加上65秒
  t3.print_24();
  cout<<"\n65+t1:";
  t3=65+t1;  //65秒加上Time类对象
  t3.print_24();  
  cout<<"\nt1-t2:";
  t3=t1-t2;  //两个Time类对象相减
  t3.print_24();
  cout<<"\nt1-70:";
  t3=t1-70;  //Time类对象减去70秒
  t3.print_24();  
  return 0;
}
 
输入描述

 
输出描述

 
输入样例

 
输出样例
t1+t2:15:57:34
t1+65:02:35:05
65+t1:02:35:05
t1-t2:10:49:34
t1-70:02:32:50

这是我的代码  怎么改呢??
#include<iostream>
#include<iomanip>
using namespace std ;
class Time
{
    int hour , minute , second ;
   
public:
   
    int SecCalc()
    {
        return ( hour * 60 + minute ) * 60 + second ;
    }
   
    Time( int h = 0 , int m = 0 , int s = 0 ) ;
   
    void SetTime( int h = 0 , int m = 0 , int s = 0 ) ;
   
    void print_12() ;
   
    void print_24() ;
   
    friend Time Add( Time& , Time& ) ;
    friend Time Add( Time& , int & ) ;
    friend Time Add( int & , Time& ) ;
   
    friend Time Sub( Time& , Time& ) ;
    friend Time Sub( Time& , int &) ;
    friend Time Sub( int & , Time& ) ;
   
} ;

Time::Time( int h  , int m , int s   )
{
    hour = h ;
    minute = m ;
    second = s ;
}

void Time::SetTime( int h , int m , int s )
{
    hour = h ;
    minute = m ;
    second = s ;
}

void Time::print_12()
{
    if( hour >= 0 && hour <= 11 )
    {
        cout << setfill('0') ;
        cout << setw(2) << hour << ":" << minute << ":" << second << " AM" ;
    }
    else
    {
        cout << setfill('0') ;
        cout << setw(2) << hour - 12 << ":" << minute << ":" << second << " PM" ;
    }
}

void Time::print_24()
{
    cout << setfill('0') ;
    cout << setw(2) << hour << ":" << minute << ":" << second ;
}
Time Add( Time & t1 , Time & t2 )
{
    int temp = ( t1.hour*3600 + t1.minute*60 + t1.second ) + ( t1.hour*3600 + t1.minute*60 + t1.second ) ;
    t1.hour = temp / 3600 ;
    t1.minute = (temp % 3600 ) / 60 ;
    t1.second = temp % 3600 % 60 ;
    return *t1 ;
}
Time Sub( Time & t1 , Time & t2 )
{
    int temp = ( hour*3600 + minute*60 + second ) - ( t2.hour*3600 + t2.minute*60 + t2.second ) ;
    if( temp < 0  )
        temp = - temp ;
    t1.hour = temp / 3600 ;
    t1.minute = (temp % 3600 ) / 60 ;
    t1.second = temp % 3600 % 60 ;
    return *t1 ;
}


搜索更多相关主题的帖子: 用友 
2012-04-11 16:36
快速回复:运算符重载
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.046172 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved