- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
对象数组与对象指针
重庆邮电大学经济管理学院面向对象程序设计上级实验课程对象数组与对象指针对象数组与对象指针一.实验目的与要求掌握数组与指针的定义与使用方法。理解组与指针的存储分配与表示。学习函数传递数组的方法。学习用指针和引用向函数传递参数。学习静态数据成员和静态成员函数的使用。理解友元与友元函数的作用与使用方法。二.实验准备与内容设计一个矩阵类Matrix(矩阵由二维数组实现),有分配空间和对矩阵赋值的功能。练习将这个矩阵类的对象作为参数传送到函数Mul(),用普通,指针和引用三种方法实现,并要注意这三种方式的区别。直接传送:Mul(Matrix a,Matrix b)。实际上只是传送值,在函数中针对对象的任何修改均不影响该对象本身。指针传送:Mul(Matrix *pa,Matrix *pb)。要注意指针的级数。引用传送:Mul(Matrix a,Matrix b)这种调用将影响参数的实际值。将Mul函数实现:完成对传送的两个Martix对象的相乘运算。下面给出矩阵相乘的算法:矩阵a[I][j]与矩阵b[x][y]相乘,条件是j==x。乘积是一个新的矩阵c[I][j],其中c[I][j]的值是∑(a[I][k]*b[k][y])其中k=0,1,2,……,j。在Matrix类中定义一个静态数据成员,记录当前所有Matrix对象的数量。定义一个友元函数实现转制功能。转制是指将数组中a[i][j]与a[j][i]的值对调。三.实验方法与步骤建立一个工程。在工程中定义一个Matrix类,在构造函数中根据参数创建数据成员:一个二维数组。提示:用构造函数记录二维数组的大小(unsigned int x, unsigned int y)。类中实际定义的二维数组的数据成员是一个指针(二级指针),int**pMatrix。在构造函数中根据传送的参数为这个二维数组分配空间:pMatrix=new int[x][y]。设计成员函数,完成对数组的赋值的功能。本例中定义的成员函数为SetValue(unsigned int x, unsigned inty,int value)。参考以上的说明,以常用三种方式实现向Mul()函数传递参数,并返回函数相乘的结果。在类中定义一个静态数据成ObjectAliveNo,记录当前共有几个Matrix类的对象。实现方法:可以在对象的构造函数中向该数据成员报告(使静态数据成员加1);在析构函数中也向该数据成员报告(使静态数据成员减1)。并要注意,在程序开始时,给这个静态数据成员赋初值。在Matrix类中定义一个友元函数,使其具有对Matrix类的对象内的数组进行转制功能。写出实验报告结合思考与练习题,写出实验报告程序实现:#includematrix.h??#includeiostream??using?namespace?std;??class?Matrix??{??private:??????int?**pmatrix;??????int?imaxx,imaxy;??????static?int?matrixnum;??public:??????Matrix(unsigned?int?x,unsigned?int?y);??????Matrix(Matrix?m);??????~Matrix();??????bool?SetValue(unsigned?int?x,unsigned?int?y,int?value);??????void?input();??????void?print()?const;??????Matrix?operator?*?(Matrix?m);??????Matrix?operator?=?(Matrix?m);??????friend?Matrix?Rotate(Matrix?m);??????friend?Matrix?Mul(Matrix?a,Matrix?b);};??int?Matrix::matrixnum=0;??Matrix::Matrix(unsigned?int?x,unsigned?int?y)??{??????pmatrix=new?int?*[x];??????if(!pmatrix)??????{??????????cerrMatrix?constructing?errorendl;??????????exit(0);??????}??????for(int?i=0;ix;i++)??????????pmatrix[i]=new?int[y];?????imaxx=x;??????imaxy=y;??????matrixnum++;??}??Matrix::Matrix(Matrix?m)??{??????imaxx=m.imaxx;??????imaxy=m.imax
文档评论(0)