实验七运算符重载.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验七运算符重载.doc

实验七 运算符重载 实验目的: 1)掌握运算符重载的基本概念、语法和相关操作 2)学习运算符重载的使用 2.实验内容: 创建一个类DoubleSubscriptedArray。在构造阶段,该类能够创建一个包含任意行、任意列的数组。类还应该提供operator()函数来进行双下标运算。例如,在一个3*5的名为a的双下标数组中,可以用a(1,3)的形式访问第1行第3列的元素。函数operator()应能执行相应的指针算术运算来访问数组中的各个元素。在此,operator()函数应具有两种版本————一种返回int,从而双下标数组的元素可以被用做左值;另一种返回const int,从而const双下标数组元素可以被用做右值。这个类还应提供以下运算:"=="、"!="、"="、"〈〈"(以行列式的形式输出数组)和"〉〉"(输入整个数组内容)。 3.实验分析: 为了使运算符在不同的上下文中具有不同的含义,C++允许重载大多数运算符,编译器根据运算符使用方式的产生合适的代码。在完成同样的操作下,如果运算符重载能够比用明确的函数使程序更清晰,那么使用运算符重载。运算符函数既可以是成员函数,也可以是非成员函数。当运算符函数是成员函数时,最左边的操作数必须是运算符类的对象,如果左边的数必须是一个不同类的对象或者一个内部类型的对象,该运算符函数就必须作为一个非成员函数来实现。因此,在该题中,就注意一下几点: 1.在重载“=”运算符时,要记住两个数组必须大小一致。如果不一致,就删除目标数组,重新分配一个具有恰当大小的数组。 2.重载的ostream运算符必须声明为friend(友元)。 3.重载的operator〈〈和operator函数分别返回时对ostream和istream对象的引用。这就实现了级联的函数调用。 4.左值operator()函数和右值operator()函数之间的区别是右值operator()函数返回一个const int型值,而且右值operator()函数是一个常量函数。 4.相关知识: 1.运算符重载为成员函数形式 2.运算符重载为友元函数的形式 3.一元运算符重载 4.二元运算符重载 5.特殊运算符重载 5.程序代码: //类的定义文件 // DoubleSubscriptedArray.h: interface for the DoubleSubscriptedArray class. #if !defined(AFX_DOUBLESUBSCRIPTEDARRAY_H_B314_42AB_B146_27885A0C0E97__INCLUDED_) #define AFX_DOUBLESUBSCRIPTEDARRAY_H_B314_42AB_B146_27885A0C0E97__INCLUDED_ #if _MSC_VER 1000 #pragma once #endif // _MSC_VER 1000 #includeiostream.h #include assert.h #include iomanip.h #includestdlib.h class DoubleSubscriptedArray { friend ostream operator (ostream , const DoubleSubscriptedArray ) ; friend istream operator (istream , DoubleSubscriptedArray ) ; public: DoubleSubscriptedArray(int arraycolumn1=5,int arraycolumn2=6);//构造函数 DoubleSubscriptedArray(const DoubleSubscriptedArray init); //拷贝构造函数 int getSize() {return size;} int getColumn1() {return column1;} int getColumn2() {return column2;} DoubleSubscriptedArray operator =( DoubleSubscriptedArray right); int operator ==(const DoubleSubscriptedArray ) const ;//比较数组的相等性 int operator !=(const DoubleSubscriptedArray ) const ;//比较数组的不相等 int DoubleSubscripte

文档评论(0)

170****0532 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8015033021000003

1亿VIP精品文档

相关文档