C实验二类与对象.docx
- 文档编号:5484970
- 上传时间:2022-12-17
- 格式:DOCX
- 页数:35
- 大小:21.88KB
C实验二类与对象.docx
《C实验二类与对象.docx》由会员分享,可在线阅读,更多相关《C实验二类与对象.docx(35页珍藏版)》请在冰豆网上搜索。
C实验二类与对象
实验二类与对象
实验目的和要求
1.掌握类、类的数据成员、类的成员函数的定义方式。
2.理解类成员的访问控制方式。
3.掌握对象的定义和操作对象的方法。
4.理解构造函数和析构函数的定义与执行过程。
5.掌握重载构造函数的方法。
6.了解拷贝构造函数的定义方法。
实验内容
1.下面程序中有错,在不删除和增加代码行的情况下,改正错误语句,使其正确运行。
#include
classAa
{
public:
Aa(inti=0)
{
a=i;
cout<<"Constructor"< } ~Aa() { cout<<"Destructor"< } voidprint() { cout< } private: inta; }; intmain() { Aaal (1),a2 (2); al.print(); cout< return0; } 2.检查下面的程序,找出其中的错误,并改正。 然后上机调试,使程序能正常运行。 (1) #include classDate { voidset_date(); voidshow_date(); intyear; intmonth; intday; }; Dated; intmain() { set_date(); show_date(); } voidset_date() { cin>>d.year; cin>>d.month; cin>>d.day; } voidshow_date() { cout< } (2) #include classA { public: voidA(inti=0) { m=i; } voidshow() { cout< } void~A(){} private: intm; }; intmain() { Aa(5); a.m+=10; a.show();return0; } (3) #include classX { private: inta=0; int&b; voidsetA(inti) { a=i; } X(inti) { a=i; } public: intX() { a=b=0; } X(inti,intj) { a=i; b=j; } voidsetC(intk) { c=c+k; } }; voidmain() { Xx1;Xx2 (2); Xx3(1,2);x1.setA(3); } 3.调试下列程序。 #include classTPoint { private: intX,Y; public: TPoint(intx,inty) { X=x; Y=y; cout<<"Constructoriscalled"< } TPoint(TPoint&p); ~TPoint() {cout<<"Destructoriscalled"< } {returnX;}intgety() {returnY;} }; TPoint: : TPoint(TPoint&p) { X=p.X; Y=p.Y; cout<<"Copy-initializationConstructoriscalled"< } voidmain() { TPointp1(4,9); TPointp2(p1); TPointp3=p2; cout<<"p3=("< } (1)写出程序的输出结果,并解释输出结果。 (2)按下列要求进行调试: 在主函数体内,添加下列说明语句: TPointp4,p5 (2); 调试程序会出现什么现象? 为什么? 如何解决? (提示: 对已有的构造函数进行适当修改)结合运行结果分析如何使用不同的构造函数创建不同的对象。 (3)在主函数内使用new创建不同参数动态两个动态对象,输出其坐标,并用 删除之。 运行程序,分析运行结果。 (4)在程序中定义个全局对象,在主函数最前添加语句: delete cout<<"Entermain"< 运行程序,分析运行结果。 4.完善程序,并写出运行结果 根据程序要求,完善程序后输入源程序,编译连接,并写出运行结果。 如果某个自然数除了1和它本身外还有其他因子,则这个自然数就是合数(非素数)。 试定义一个类NUM,从3开始向上试探找出n个连续的自然数,且它们都是合数。 当找到 第一组连续的n个合数后,即停止查找。 具体要求如下: (1)私有成员 intn: int*p: 存放满足条件的连续自然数的个数。 根据n的值申请一个动态数组用来存放求出的满足条件的 n个自然数。 (2)公有成员函数 NUM(intn1): 构造函数,用 n1初始化 n,根据 n的值申请动态数组空间,使 p指向该 动态数组空间。 intyes(intx): 判断x是否为合数。 如果是,返回1,否则返回0。 voidfun(): 从3开始向上试探找出n个连续的自然数,且它们都是合数,并依次存入动 态数组。 voidprint(): 输出满足条件的 n个合数。 ~NUM(): 析构函数,释放动态数组所占用的存储空间。 (3)在主函数中定义一个NUM类的对象num,求出10个连续的合数。 然后通过对象 num调用成员函数求出10个连续的合数,并输出计算结果。 #include classNUM {//定义数据类NUMprivate: intn;int*p; public: NUM(intn1) { n=n1; p=;//动态分配存放连续合数的存储空间 } intyes(intx) { for(inti=2;i<=x/2;i++) if(x%i==0) return1; return0; } voidfun(void) { intj; for(inti=3;1;i++) { j=0; while( { &&j p[j]=i; j++; i++; } if(j==n) break; } } voidprint(void) { cout<<"找到的"< "< for(inti=0;i cout< cout< } ~NUM() { ;//释放在构造函数中申请的存储空间 } }; voidmain() { cout<<"请输入要求的连续合数的个数 (例如 10): "; intn; cin>>n; NUMnum(n); ;//寻找连续的合数,并存入动态申请的存储空间中 ;//输出寻找到的合数 } 5.请定义一个矩形类(Rectangle),私有数据成员为矩形的长度(len)和宽度(wid),缺省构造 函数置len和wid为0,有参构造函数置len和wid为对应形参的值,另外还包括求矩形周长、求矩形面积、取矩形长度和宽度、修改矩形长度和宽度为对应形参的值、输出矩形尺寸 等公有成员函数。 要求输出矩形尺寸的格式为“length: 长度,width: 宽度”。 编写主函数对定义的类进行测试。 6.声明一个时间类,时间类中有3个私有数据成员(Hour,Minute,Second)和两个公有成 员函数(SetTime和PrintTime)。 SetTime根据传递的3个参数为对象设置时间;PrintTime负 责将对象表示的时间显示输出,输出格式为“Hour: Minute: Second”。 (1)在主函数中,建立一个时间类的对象,设置时间为9点20分30秒并显示该时间。 (2)使用构造函数代替上面的SetTime成员函数,并在主函数中使用构造函数设置时间为10点40分50秒,并显示该时间。 (3)重载时间类的构造函数(不带参数)使小时、分、秒均为 0。 (4)在时间类的析构函数中输出"Goodbye! ” (5)定义拷贝构造函数并调用。 7.下面是一个整型链表类intList的声明,请给出该类所有数据成员的类外定义,并在主函 数中测试该类。 classintList { protected: structNode { intdata; Node*next; }; Node*L; public: intList(); //构造函数 ~intList(); //析构函数 boolInsert(inti,intelem); boolRemove(inti,int&elem); //删除链表的第i个位置的元素,删除成功返回 true,失败返回false intFind(intelem); //在链表中查找值为 elem的元素,找到返回该元素在链表中的位置,否则返回 0 intLength(); //返回链表长度(元素个数) voidPrintList(); //输出链表 }; 参考答案(非权威,仅仅是我自己的理解,如有错误,欢迎批评指正! ) 第一题: #include classAa { public: Aa(inti=0) { a=i;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 对象