堆与构造、静态成员与友元.docVIP

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
堆与构造、静态成员与友元

PAGE 32 数据结构(C++版) PAGE 9 C++面向对象程序设计实验 实验报告 堆与构造、静态成员与友元 实验目的 通过本次实验使学生掌握堆与构造、静态成员与友元的基本概念,定义与引用的方法、使学生掌握堆对象的分配与释放,掌握静态数据成员和静态成员函数的使用以及友员函数、友员类的编程方法。 实验内容 1、堆与拷贝构造函数 1)编写程序:题1(14.2):写出下面程序的运行结果,请用增加拷贝构造函数的方法避免存在的问题。 源程序如下: #include iostream.h #include stdlib.h class Vector{ public: Vector(int s=100); int Elem(int ndx); void Display(); void Set(); ~Vector(); protected: int size; int* buffer; }; Vector::Vector(int s) { buffer=new int[size=s]; for(int i=0; isize; i++) buffer[i]=i*i; } int Vector::Elem(int ndx) {if(ndx0||ndx=size) {cout error in index endl; exit(1); } return buffer[ndx];} void Vector::Display() { for(int j=0; jsize; j++) cout buffer[j] endl; } void Vector::Set() { for(int j=0; jsize; j++) buffer[j]=j+1; } Vector::~Vector(){ delete[]buffer; } void main() { Vector a(10); Vector b(a); a.Set(); b.Display(); } 2)要求 判断两次程序运行是否一样? 答:不一样 3)思考题 拷贝构造函数起什么作用? 答:使两个函数可以单独独立运行 你修改的程序有什么特点,如果不修改会出现什么问题。 答:会使两个函数空间相同,发生冲突 试验结果 实验中的问题 寻找需要拷贝的地方花了很长时间 开始程序没看懂。 2、构造函数、析构函数 1)编写程序:题2(14.3):完善下列程序,定义每个成员函数和非成员函数,输出必要的信息,检查临时对象何时被创建,何时被析构。 源程序如下: class X{ public: X(int); X(X); ~X(); }; X f(X ); void main() { X a(1); X b=f(X(2)); a=f(a); } 2)编程要求 根据题意完善程序。 3)思考题 (1)对象创建的时机?对象析构的时机? (2)如果你没有定义构造函数,系统是否提供构造函数?请通过程序调试,并说明是如何调试的? 3.9 商店??售某一商品,商店每天公布统一的折扣(discount)。同时允许销售人员在销售时灵活掌握售价(price),在此基础上,对一次购10件以上者,还可以享受9.8折优惠。现已知当天3名销货员的销售情况为: 销货员号(num) 销货件数(quantity) 销货单价(price) 101 5 23.5 102 12 24.56 103 100 21.5 请编程序,计算出当日此商品的总销售款sum,以及每件商品的平均售价。要求用静态数据成员和静态成员函数。 2)编程要求 根据题意编写程序。 实验结果 3)思考题 (1)静态数据成员和静态成员函数在程序中是如何声明和定义的? 答:Static 数据成员 (2)在程序中静态数据成员和静态成员函数起到什么作用? 答:实现不同对象间数据共享 3.10 将例3.13程序中的display函数不放在Time类中,而作为类外的普通函数,然后分别在Time和Date类中将display声明为友元函数。在主函数中调用display函数,display函数分别引用Time和Date两个类的对象的私有数据,输出年、月、日和时、分、秒。请完成并上机调试。 2)编程要求 根据题意编程。 实验结果 3)思考题 (1)友元函数

文档评论(0)

xy88118 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档