




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1: 答案:C分析:对象是类的一个实例,类与对象的关系和数据与变量的关系相似,所以一个类可以有多个对象。 2:答案:B分析构造函数无返回类型、可带参数、可重载;析构函数无返回类型、不可带参数、不可重载。 3: 答案:C分析:当一个对象定义时,C+编译系统自动调用构造函数建立该对象并进行初始化;当一个对象的生命周期结束时,C+编译系统自动调用析构函数注销该对象并进行善后工作; 4:答案:D分析:在类体内不可对数据成员进行初始化;类定义结束时需用分号;只有类中的成员函数才能存取类中的私有数据。 5: 答案:D分析:如果一个类中没有定义拷贝构造函数
2、时,系统将自动生成一个默认的;拷贝构造函数只有一个参数,并且是该类对象的引用;拷贝构造函数的名字与类同名,并且不被指定返回类型;拷贝构造函数是一种成员函数。 6: 答案:B分析:静态成员可分为静态数据成员和静态成员函数;静态数据成员被定义后,必须对它进行初始化,初始化在类体外进行,一般放在该类的实现部分最合适,也可以放在其他位置,例如,放在主函数前面等;静态数据成员初始化与该类的构造函数和析构函数无关;在静态成员函数的实现中,可以直接引用静态成员,但不能直接引用非静态成员。 7: 答案:A分析:友元函数是非成员函数,在类体内说明了,在类体外定义,定义和调用等同于一般的普通函
3、数;由于它可以直接访问类的私有成员,因此破坏了类的封装性和隐藏性,尽量少用。 8: 答案:(1)3 (2)3分析:每创建一个对象自动调用一次构造函数,在这里创建了A、B、C三个对象,所以共调用了三次构造函数;每释放一个对象,系统自动调用一次析构函数,A、B、C对象释放时,分别调用析构函数,所以析构函数共调用了三次。 9:10:答案:(1) public (2) 成员函数 (3)友元函数分析:类体内的数据成员可声明为公有的、私有的和保护的,公有的数据成员可利用“对象名.成员变量”形式来进行访问;私有的数据成员能被类中的其他成员函数或友元函数所调用;保护的数据成员可以在类体中使
4、用,也可以在派生类中使用,但不能在其他类外通过对象使用。 11:分析找出以下程序中的错误,说明错误原因,给出修改方案使之能正确运行。#include<iostream.h>class one int a1,a2; public:one(int x1=0, x2=0);void main()one data(2,3); cout<<data.a1<<endl; cout<<data.a2<<endl;分析:出错原因:构造函数参数表语法错;构造函数没有函数体;类的对象不能直接访问类的私有成员变量。改正后的程序如下: #inclu
5、de<iostream.h> class one int a1, a2; public: one(int x1=0, int x2=0) a1=x1;a2=x2; int geta1() return a1; int geta2() return a2; ;void main()one data(2,3); cout<<data.geta1()<<endl; cout<<data.geta2()<<endl;12:分析以下程序的错误原因,给出修改方案使之能正确运行。#include <iostream.h>class Am
6、plifier float invol,outvol;public: Amplifier(float vin,float vout) invol=vin;outvol=vout; float gain(); Amplifier:float gain() return outvol/invol; void main() Amplifier amp(5.0,10.0); cout<<"nnThe gain is =>"<<gain()<<endl;分析:成员函数在类体外定义格式是:函数返回类型 类名:成员函数名(参数表);成员函数调用格
7、式是:对象名.成员函数名(参数表)。改正后的程序如下:#include <iostream.h>class Amplifier float invol,outvol;public: Amplifier(float vin,float vout) invol=vin;outvol=vout; float gain(); float Amplifier:gain() return outvol/invol; void main() Amplifier amp(5.0,10.0); cout<<"nnThe gain is =>"<<am
8、p.gain()<<endl; 13:下列程序的运行结果是 。#include <iostream.h>class point int x,y;public:point(int a,int b)x=a;y=b; cout<<"calling the constructor function."<<endl;point(point &p);friend point move(point q);point()cout<<"calling the destructor function.n&q
9、uot;int getx() return x;int gety() return y;point:point(point &p)x=p.x; y=p.y; cout<<"calling the copy_initialization constructor function.n"point move(point q)cout<<"OK!n" int i,j; i=q.x+10; j=q.y+20; point r(i,j); return r;void main() point m(15,40),p(0,0); poin
10、t n(m); p=move(n); cout<<"p="<<p.getx()<<","<<p.gety()<<endl;分析:根据构造函数、拷贝构造函数和友元函数的特点,执行该程序后,输出结果是:calling the constructor function.calling the constructor function.calling the copy_initialization constructor function.calling the copy_initialization
11、constructor function.OK!calling the constructor function.calling the copy_initialization constructor function.calling the destructor function.calling the destructor function.calling the destructor function.P=25,60calling the destructor function.calling the destructor function.calling the destructor
12、function.说明:(1)构造函数执行三次,分别初始化主函数中的对象m,p和move函数中的对象r。(2)拷贝构造函数共执行了三次。第一次,初始化对象n;第二次在调用函数move()时,实参n给形参q进行初始化;第三次是执行函数move的return r;语句时,系统用r初始化一个匿名对象时使用了拷贝构造函数。(3)析构函数执行了六次。在退出函数move时释放对象r和q共调用二次;返回主函数后,匿名对象赋值给对象p后,释放匿名对象又调用一次析构函数;最后退出整个程序时释放对象m,n和p调用三次。 14:定义一个学生类,其中有3个数据成员:学号、姓名、年龄,以及若干成员函数。同时编
13、写main函数使用这个类,实现对学生数据的赋值和输出。程序代码如下:#include<iostream.h>#include<string.h>class student int no; char name10; int age;public: student(int i, char *str, int g) no=i;strcpy(name,str);age=g;student( )no=0; strcpy(name,”none”);age=-1;void display()if (no>0) cout<<”no” <<no<<
14、;”:”<<name<<” is ”<<age<<” years old.n”; else cout<<”no”<<no<<”: None!n”;void main() student d1(1001,”Tom”,18);d1.display();student d2;d2.display(); 15:计算两点之间的距离。 方法一:可以定义点类(Point),再定义一个类(Distance)描述两点之间的距离,其数据成员为两个点类对象,两点之间距离的计算可设计由构造函数来实现。#include<
15、iostream.h>#include<math.h>class Point public: Point(int a=0, int b=0) x=a; y=b; int xcord() return x; int ycord () return y; private: int x,y;class Distance public: Distance(Point q1,Point q2); double getdist() return dist; private: Point p1,p2; double dist;Distance:Distance(Point q1,Point
16、 q2):p1(q1),p2(q2) double x=double(p1.xcord()-p2.xcord(); double y=double(p1.ycord()-p2.ycord(); dist=sqrt(x*x+y*y);void main() Point p(0,0),q(1,1);Distance dis(p,q);cout<<”The distance is: ”<<dis.getdist()<<endl;方法2:将两点之间距离函数声明为Point类的友元函数。#include<iostream.h>#include<math.h>class Pointpublic: Point(int a=0, int b=0) x=a; y=b; int xcord() return x; int ycord () return y; private: int x,y;fr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安检物品游戏课件
- 少儿编程行业分析报告
- 2025年陕西省渭南市蒲城县中考一模语文试题(原卷版+解析版)
- 公司出纳员工个人年终工作总结
- 幼儿园实习报告范文
- 2025合同范本全书
- 电子出版物出版合同范本
- 2025年居民租赁合同协议书下载
- 承包饭店经营权合同
- 2025广告代理制作合同新版本(合同样本)
- 中国国新基金管理有限公司招聘笔试题库2024
- 环境监测站运行管理与质量控制标准
- 20以内的加法口算练习题4000题 284
- 高中历史选择性必修2知识点总结归纳
- 国家开放大学《学前儿童语言教育活动指导》形成性考核1-4参考答案
- 湖南省2024年对口升学考试计算机应用类试题(含参考答案)
- 2018海湾GST-GD-N90消防应急广播设备安装使用说明书
- 项目风险记录及跟踪表
- 社会信用法概论智慧树知到期末考试答案章节答案2024年湘潭大学
- 北京市石景山区第九中学2023-2024学年化学高一下期末联考模拟试题含解析
- 建筑工程分部分项工程划分表(新版)
评论
0/150
提交评论