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