下载此文档

程序设计教程(机械工业出版社)课后习题答案第7章操作符重载.doc


文档分类:IT计算机 | 页数:约22页 举报非法文档有奖
1/22
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/22 下载此文档
文档列表 文档介绍
第7章操作符重载 为什么要对操作符进行重载?是否所有的操作符都可以重载?答:通过对C++操作符进行重载,我们可以实现用C++的操作符按照通常的****惯来对某些类(特别是一些数学类)的对象进行操作,从而使得程序更容易理解。除此之外,操作符重载机制也提高了C++语言的灵活性和可扩充性,它使得C++操作符除了能对基本数据类型和构造数据类型进行操作外,也能用它们来对类的对象进行操作。不是所有的操作符都可以重载,因为“.”,“.*”,“::”,“?:”,sizeof这五个操作符不能重载。 操作符重载的形式有哪两种形式?这两种形式有什么区别?答:一种就是作为成员函数重载操作符;另一种就是作为全局(友元)函数重载操作符。当操作符作为类的非静态成员函数来重载时,由于成员函数已经有一个隐藏的参数this,因此对于双目操作符重载函数只需要提供一个参数,对于单目操作符重载函数则不需提供参数。当操作符作为全局函数来重载时,操作符重载函数的参数类型至少有一个为类、结构、枚举或它们的引用类型。而且如果要访问参数类的私有成员,还需要把该函数说明成相应类的友元。对于双目操作符重载函数需要两个参数,对于单目操作符重载函数则需要给出一个参数。操作符=、()、[]以及->不能作为全局函数来重载。另外,作为类成员函数来重载时,操作符的第一个操作数必须是类的对象,全局函数重载则否。 定义一个时间类Time,通过操作符重载实现:时间的比较(==、!=、>、>=、<、<=)、时间增加/减少若干秒(+=、-=)、时间增加/减少一秒(++、--)以及两个时间相差的秒数(-)。解:classTime{private: inthour,minute,second;public: Time() { hour=minute=second=0; } Time(inth) { hour=h; minute=second=0; } Time(inth,intm) { hour=h; minute=m; second=0; } Time(inth,intm,ints) { hour=h; minute=m; second=s; } Time(constTime&t) { hour=; minute=; second=; } booloperator==(Time&t) { if(hour==&&minute==&&second==) returntrue; returnfalse; } booloperator!=(Time&t) { return!(*this==t); } booloperator>(Time&t) { if(hour>) returntrue; elseif(hour==&&minute>) returntrue; elseif(hour==&&minute==&&second>) returntrue; else returnfalse; } booloperator>=(Time&t) { return*this>t||*this==t; } booloperator<(Time&t) {return!(*this>=t); } booloperator<=(Time&t) { return!(*this>t); } Time&operator+=(ints) { second+=s; while(second>=60) { second-=60; minute++; } while(minute>=60) { minute-=60; hour++; } while(hour>=24) hour-=24; return*this; } Time&operator-=(ints) { second-=s; while(second<0) { second+=60; minute--; } while(minute<0) { minute+=60; hour--; } while(hour<0) hour+=24; return*this; } Time&operator++()//对Timet,操作为:++t { *this+=1; return*this; } Timeoperator++(int)//对Timet,操作为:t++ { Timet=*this; *this+=1; returnt; } Time&operator--() {*this-=1; return*this; } Timeoperator--(int) { Timet=*this; *this-=1; returnt; } i

程序设计教程(机械工业出版社)课后习题答案第7章操作符重载 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数22
  • 收藏数0 收藏
  • 顶次数0
  • 上传人aena45
  • 文件大小88 KB
  • 时间2020-10-25