程序设计教程()课后习题答案 第7章 操作符重载.doc

上传人:飞****9 文档编号:133793885 上传时间:2020-05-30 格式:DOC 页数:22 大小:89KB
返回 下载 相关 举报
程序设计教程()课后习题答案 第7章 操作符重载.doc_第1页
第1页 / 共22页
程序设计教程()课后习题答案 第7章 操作符重载.doc_第2页
第2页 / 共22页
程序设计教程()课后习题答案 第7章 操作符重载.doc_第3页
第3页 / 共22页
程序设计教程()课后习题答案 第7章 操作符重载.doc_第4页
第4页 / 共22页
程序设计教程()课后习题答案 第7章 操作符重载.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《程序设计教程()课后习题答案 第7章 操作符重载.doc》由会员分享,可在线阅读,更多相关《程序设计教程()课后习题答案 第7章 操作符重载.doc(22页珍藏版)》请在金锄头文库上搜索。

1、第7章 操作符重载1、 为什么要对操作符进行重载?是否所有的操作符都可以重载?答:通过对C+操作符进行重载,我们可以实现用C+的操作符按照通常的习惯来对某些类(特别是一些数学类)的对象进行操作,从而使得程序更容易理解。除此之外,操作符重载机制也提高了C+语言的灵活性和可扩充性,它使得C+操作符除了能对基本数据类型和构造数据类型进行操作外,也能用它们来对类的对象进行操作。 不是所有的操作符都可以重载,因为“.”, “.*”, “:”, “?:”,sizeof这五个操作符不能重载。2、 操作符重载的形式有哪两种形式?这两种形式有什么区别?答:一种就是作为成员函数重载操作符;另一种就是作为全局(友元

2、)函数重载操作符。当操作符作为类的非静态成员函数来重载时,由于成员函数已经有一个隐藏的参数this,因此对于双目操作符重载函数只需要提供一个参数,对于单目操作符重载函数则不需提供参数。当操作符作为全局函数来重载时,操作符重载函数的参数类型至少有一个为类、结构、枚举或它们的引用类型。而且如果要访问参数类的私有成员,还需要把该函数说明成相应类的友元。对于双目操作符重载函数需要两个参数,对于单目操作符重载函数则需要给出一个参数。操作符=、 ( )、 以及-不能作为全局函数来重载。另外,作为类成员函数来重载时,操作符的第一个操作数必须是类的对象,全局函数重载则否。3、 定义一个时间类Time,通过操作

3、符重载实现:时间的比较(=、!=、=、 (Time &t)if (hourt.hour)return true;else if (hour=t.hour & minutet.minute)return true;else if (hour=t.hour & minute=t.minute & secondt.second)return true;elsereturn false;bool operator =(Time &t)return *this t | *this = t;bool operator = t);bool operator t);Time &operator +=(int

4、s)second+=s;while (second=60)second-=60;minute+;while (minute=60)minute-=60;hour+;while (hour=24)hour-=24;return *this;Time &operator -=(int s)second-=s;while (second0)second+=60;minute-;while (minute0)minute+=60;hour-;while (hour (const Complex &c1,const Complex &c2); friend bool operator =(const C

5、omplex &c1,const Complex &c2); friend bool operator (const Complex &c1,const Complex &c2); friend bool operator (const Complex &c1,const Complex &c2)return c1.modulus() c2.modulus();bool operator =(const Complex &c1,const Complex &c2)return c1.modulus() = c2.modulus();bool operator (const Complex &c

6、1,const Complex &c2)return c1.modulus() c2.modulus();bool operator =(const Complex &c1,const Complex &c2)return c1.modulus() = c2.modulus();Complex operator+(const Complex &c1,const Complex &c2)Complex temp;temp.real=c1.real+c2.real;temp.imag=c1.imag+c2.imag;return temp;Complex operator-(const Compl

7、ex &c1,const Complex &c2)Complex temp;temp.real=c1.real-c2.real;temp.imag=c1.imag-c2.imag;return temp;Complex operator*(const Complex &c1,const Complex &c2)Complex temp;temp.real=c1.real*c2.real-c1.imag*c2.imag;temp.imag=c1.real*c2.imag+c1.imag*c2.real;return temp;Complex operator/(const Complex &c1,const Complex &c2)double d=c2.modulus(); if (d != 0) Complex temp; temp.real=(c1.real*c2.real+c1.imag*c2

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 管理论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号