C++清考资料类和对象
更新时间:2024-06-20 03:45:02 阅读量: 综合文库 文档下载
- 广东省考资料推荐度:
- 相关推荐
一、单项选择题 ( 在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。共 15题 )
1. 在类中说明的成员可以使用关键字( )进行修饰。 a. private b. extern c. auto d. register
2. 如果类 a 被说明成类 b 的友元,则( )。 a. 类 a 的成员即类 b 的成员 b. 类 b 的成员即类 a 的成员
c. 类 a 的成员函数不得访问类 b 的成员 d. 类 b 不一定是类 a 的友元
3. 定义析构函数时,应该注意( )。 a. 其名与类名完全相同 b. 返回类型是 void 类型 c. 无形参,也不可重载
d. 函数体中必须有 delete 语句
4. 假定一个类的构造函数为 a(int aa,int bb){a=aa++;b=a*bb++;} ,则执行 a x(4,5); 语句后, x.a 和 x.b 的值分别为( )。 a. 4 和 5 b. 5 和 4 c. 4 和 20 d. 20 和 5
5. 假定 ab 为一个类,则执行 ab x ;语句时将自动调用该类的( )。 a. 有参构造函数 b. 无参构造函数 c. 拷贝构造函数 d. 赋值构造函数
6. 如果 class 类中的所有成员在定义时都没有使用关键字 pubilc,private,protected ,则所有成员缺省定义为:( )。 a. public b. protected c. private d. static
7. 类的指针成员的初始化是通过函数完成的,这个函数通常是( )。 a. 析构函数 b. 构造函数 c. 其它成员函数 d. 友元函数
8. 在 c++ 中实现封装是借助于( )。 a. 枚举 b. 类 c. 数组 d. 函数
9. c++对c语言作了很多改进,即从面向过程变成为面向对象的主要原因是( )。 a. 增加了一些新的运算符
b. 允许函数重载,并允许设置缺省参数 c. 规定函数说明符必须用原型 d. 引进了类和对象的概念
10. 下列不是描述类的成员函数的是( )。 a. 构造函数 b. 析构函数 c. 友元函数
d. 拷贝构造函数
11. 下面有关类说法不正确的是( )。 a. 一个类可以有多个构造函数 b. 一个类只有一个析构函数 c. 析构函数需要指定参数
d. 在一个类中可以说明具有类类型的数据成员
12. 下列不能作为类的成员的是( )。 a. 自身类对象的指针 b. 自身类对象
c. 自身类对象的引用 d. 另一个类的对象
13. 所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是( )。 a. 类 b. 对象 c. 函数体 d. 数据块
14. 类的构造函数被自动调用执行的情况是在定义该类的( )。 a. 成员函数时 b. 数据成员时 c. 对象时
d. 友元函数时
15. 已知类 a 是类 b 的友元,类 b 是类 c 的友元,则( )。 a. 类 a 一定是类 c 的友元 b. 类 c 一定是类 a 的友元
c. 类 c 的成员函数可以访问类 b 的对象的任何成员 d. 类 a 的成员函数可以访问类 b 的对象的任何成员
二、程序分析题,请给出如下程序的执行结果 #include
class Clock {
private: int hour, minute, second; public:
Clock(int h=0, int m=0, int s=0) { hour=h; minute=m; second=s; } Clock(Clock &ck) { hour=ck.hour; minute=ck.minute; second=ck.second; cout <<\ cout < void func(Clock ckp) { ckp.Settime(8,15,23); } void main() { Clock ck1; int h=0, m=0, s=0; func(ck1); ck1.Gettime(h,m,s); cout <<\ Clock ck2(ck1); h=m=s=0; ck2.Gettime(h,m,s); cout <<\} 三、程序设计题 已知在point.h文件中有如下Point类的声明,请在point.cpp文件中完成类的定义,并在main.cpp文件中设计主函数测试Point类的功能。分别写出point.cpp文件和main.cpp文件的内容。 //point.h文件 #include class Point { public: Point(int=0, int=0);//构造函数 ~Point(); //析构函数 int GetX(); //获得点的x坐标 int GetY(); //获得点的y坐标 void SetPt(int, int); //重新设置点的x、y坐标 void OffsetPt(int, int);//在原来的坐标的基础上增加偏移量 private: int xVal, yVal; }; 参考答案: 一、单项选择题 1-5 a d c c b 6-10 c b b d c 11-15 c c a c d 二、程序分析题 Copy constructor: 0:0:0 Time: 0:0:0 Copy constructor: 0:0:0 Time: 0:0:0 三、程序设计题 1. point.cpp文件 #include \ Point::Point(int x, int y) :xVal(x),yVal(y) {} Point::~Point() { } void Point::SetPt (int x, int y) { xVal = x; yVal = y; } void Point::OffsetPt (int x, int y) { xVal += x; yVal += y; } int Point:: GetX () { return xVal; } int Point:: GetY () { return yVal; } main.cpp文件 #include int main() { Point p1,p2; p1.SetPt(0,0); p1.OffsetPt(-2,3); cout <<\ p2.SetPt(2,5); cout <<\ return 0; } X1:-2 Y1:3 X2:2 Y2:5 一、单项选择题 ( 在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。共 15题 ) 1. 下列说法中正确的是( )。 a. 类定义中只能说明函数成员的函数头,不能定义函数体 b. 类中的函数成员可以在类体中定义,也可以在类体之外定义 c. 类中的函数成员在类体之外定义时必须要与类声明在同一文件中 d. 在类体之外定义的函数成员不能操作该类的私有数据成员 2. 重载函数在调用时选择的依据中,错误的是( )。 a. 函数的参数 b. 参数的类型 c. 函数的名字 d. 函数的类型 3. 构造函数不具备的特征的是( )。 a. 构造函数的函数名与类名相同 b. 构造函数可以重载 c. 构造函数可以设置默认参数 d. 构造函数必须指定类型说明 4. 通常,拷贝构造函数的参数是( )。 a. 某个对象名 b. 某个对象的成员名 c. 某个对象的引用名 d. 某个对象的指针名 5. 类的析构函数的作用是( )。 a. 一般成员函数 b. 类的初始化 c. 对象的初始化 d. 在撤销对象占用的内存之前完成清理工作 6. 类的析构函数是在( )调用的。 a. 类创建时 b. 创建对象时 c. 删除对象时 d. 不自动调用 7. 在 c++ 中,函数原型不能标识( )。 a. 函数的返回类型 b. 函数参数的个数 c. 函数参数类型 d. 函数的功能 8. 在 c++ 程序中,对象之间的相互通信通过( )。 a. 继承实现 b. 调用成员函数实现 c. 封装实现 d. 函数重载实现 9. 对于任意一个类,析构函数的个数最多为( )。 a. 0 b. 1 c. 2 d. 3 10. 友元关系不能( )。 a. 继承 b. 是类与类的关系 c. 是一个类的成员函数与另一个类的关系 d. 提高程序的运行效率 11. 考虑函数原型void test(int a,int b=7, char=\,下面的函数调用中,属于不合法调用的是( )。 a. test(5); b. test(5,8); c. test(6,\d. test(0,0,\ 12. 下面有关重载函数的说法中正确的是( )。 a. 重载函数必须具有不同的返回值类型; b. 重载函数形参个数必须不同; c. 重载函数必须有不同的形参列表; d. 重载函数名可以不同; 13. 下列关于构造函数的描述中,错误的是( )。 a. 构造函数可以设置默认参数; b. 构造函数在定义类对象时自动执行; c. 构造函数可以是内联函数; d. 构造函数不可以重载; 14. 下面对于友元函数描述正确的是( )。 a. 友元函数的实现必须在类的内部定义 b. 友元函数是类的成员函数 c. 友元函数破坏了类的封装性和隐藏性 d. 友元函数不能访问类的私有成员 15. 对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是访问控制属性的是( )。 a. 公有类型 b. 私有类型 c. 保护类型 d. 友元类型 二、程序分析题,给出如下程序的运行结果 #include public: Student(int n, string nam, char s) { num=n; name=nam; sex=s; cout <<\ } ~Student() { cout <<\ void display( ) { cout <<\ cout <<\ cout <<\ } private: int num; string name; char sex; }; int main( ) { Student stud1(10010,\ stud1.display( ); Student stud2(10011,\ stud2.display( ); return 0; } 三、程序设计题 根据题目提供的主函数和程序的运行结果思考Time类至少应该具有哪些数据成员和成员函数,特别是成员函数应该具有什么功能,并将该类设计出来。 主函数为: int main() { Time t1(12,0,0); t1.Reset(23,59,59); Time t2(t1); cout <<\< 该主函数运行后的输出为: constructor! 12:0:0 after reset, 23:59:59 copy constructor! 23:59:59 t2 23:59:59 after reset, 11:21:23 destructor! 11:21:23 destructor! 23:59:59 请根据主函数及程序的输出,完整的设计出Time类。 参考答案: 一、单项选择题 1-5 b d d c d 6-10 c d b b a 11-15 c c d c d 二、程序分析题 Constructor called. num:10010 name:Wang_li sex:f Constructor called. num:10011 name:Zhang_fun sex:m Destructor called.Zhang_fun Destructor called.Wang_li 三、程序设计题 #include class Time { public: Time(int h=0, int m=0, int s=0):hour(h),minute(m),second(s) { cout <<\ cout < { hour=h; minute=m; second=s; cout <<\ cout < 类和对象单元练习 一、单选题 1.对于任意一个类,析构函数的个数最多为( ) A.0 B.1 C.2 D.3 2.下面说法正确的是( ) A.内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方 B.内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方 C.类的内联函数必须在类体内定义 D.类的内联函数必须在类体外通过加关键字inline定义 3.友元关系不能( ) A.继承 B.是类与类的关系 C.是一个类的成员函数与另一个类的关系 D.提高程序的运行效率 4.在C++程序中,对象之间的相互通信通过( ) A.继承实现 B.调用成员函数实现 C.封装实现 D.函数重载实现 5.所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是( ) A.类 B.对象 C.函数体 D.数据块 6.面向对象的程序设计语言必须具备的关键要素是( ) A.抽象和封装 B.抽象和多态性 C.抽象、封装、继承和多态性 D.抽象、封装和继承性 7.类的构造函数被自动调用执行的情况是在定义该类的( ) A.成员函数时 B.数据成员时 C.对象时 D.友元函数时 8.已知类A是类B的友元,类B是类C的友元,则( ) A.类A一定是类C的友元 B.类C一定是类A的友元 C.类C的成员函数可以访问类B的对象的任何成员 D.类A的成员函数可以访问类B的对象的任何成员 9.下列说法中正确的是( ) A.类定义中只能说明函数成员的函数头,不能定义函数体 B.类中的函数成员可以在类体中定义,也可以在类体之外定义 C.类中的函数成员在类体之外定义时必须要与类声明在同一文件中 D.在类体之外定义的函数成员不能操作该类的私有数据成员 10.在C++中实现封装是借助于( ) A.枚举 B.类 C.数组 D.函数 11.假定AB为一个类,则执行 “AB a(2), b[3], *p[4];”语句时共调用该类构造函数的次数为( ) A. 3 B. 4 C. 5 D. 9 12.假定AB为一个类,px为指向该类的一个含有n个对象的动态数组的指针,则执行“delete []px;”语句时共调用该类析构函数的次数为( ) A. 0 B. 1 C. n D. n+1 13.假定一个类的构造函数为 “A(int aa, int bb) {a=aa; b=aa*bb;}”,则执行 “Ax(4,5);”语句后,x.a和x.b的值分别为( ) A. 4和5 B. 5和4 C. 4和20 D. 20和5 14.构造函数不具备的特征是 ( ) A.构造函数的函数名与类名相同 B.构造函数可以重载 C.构造函数可以设置默认参数 D.构造函数必须指定类型说明 15.C++ 对 C 语言作了很多改进,即从面向过程变成为面向对象的主要原因是( ) A.增加了一些新的运算符 B.允许函数重载,并允许设置缺省参数 C.规定函数说明符必须用原型 D.引进了类和对象的概念 16.对于任一个类,用户所能定义的构造函数的个数至多为( ) A.0 C.2 B.1 D.任意个 17.假定AA为一个类,a()为该类公有的函数成员,x为指向该类对象的指针,则访问x对象中函数成员a()的格式为( ) A.x.a C.x->a 18.若Sample类中的一个成员函数说明如下: void set(Sample& a),则Sample& a的含义是( ) A.指向类Sample的名为a的指针 B.a是类Sample的对象引用,用来作函数Set()的形参 C.将a的地址赋给变量Set D. 将Sample的对象a作为函数Set()的形参 B.x.a() D.x->a() 19.类MyA的拷贝初始化构造函数是 ( ) A. MyA() B. MyA(MyA*) C. MyA(MyA&) D. MyA(MyA) 20.定义析构函数时,应该注意( )。 A.其名与类名完全相同 B.返回类型是void类型 C.无形参,也不可重载 D.函数体中必须有delete语句 二、填空题 1.类是用户定义的类型,具有类类型的变量称作_______。 2.当建立_______,程序自动调用该类的构造函数。 4. 每个对象都是所属类的一个____________ 3.定义重载构造函数时,应在_______上有所不同。 5.当一个成员函数被调用时,该成员函数的_______指向调用它的对象。 6.拷贝构造函数通过_______使用引用来初始化创建中的对象。 7.类的私有成员只能被它的成员函数和_________访问。 8.通过C++语言中的_________机制,可以从现存类中构建其子类。 9.封装要求一个对象应具备明确的功能,并具有_________以便和其它对象相互作用。 10.在删除一个动态对象时,将自动调用该动态对象所属类的_________函数。 11.假定用户没有给一个名为AB的类定义析构函数,则系统自动给出的缺省析构函数定义为___________ 12、局部对象、静态局部对象和全局对象中,在同一程序中________生存期最短;this指针始终指向当前正在发出成员函数调用命令的________。 三、程序填空 1.在下面程序的底画线处填上适当的字句,使该程序执行结果为10。 #include int X; public: ①________∥为X置值 ②________∥取X值 }; void main() { base test; test.init(3); cout< 2.在下列程序的底画线处填上适当的字句,完成类中成员函数的定义。 #include ①________ int same_color(line a,box b); void set_color(int c){color=c;} void define_box(int x1,int y1,int x2,int y2){upx=x1;upy=y1;} }; class line { private: int color;int startx,starty;int len; public: ②________ int same_color(line a,box b); void set_color(int c){color=c;} void define_line(int x,int y){startx=x;} }; int same_color(line a,box b) { if(a.color==b.color) return 1; return 0; } int main() { line L; box B; L.set_color(2); B.set_color(3); cout< 3.在下面程序段横线处填上适当的内容。 class A{ _①_______ int n; public: A(int nn=0):n(nn){ if(n==0)a=0; else a=new int[n]; } ②________//定义析构函数,释放动态数组空间 }; 4、在下面的横线处填上适当内容,使程序完整。 # include private: float x,y; public: loc(_①_______) { x=x1; y=y1; } float getx( ){return x;} float gety( ){return y;} ②________ float dis(loc&,loc&); }; float dis(loc&a,loc&b) { float dx=a.x-b.x; float dy=a.y-b.y; return sqrt(dx*dx+dy*dy); } void main( ) { loc p1(3.5,4.5),p2(5.5,6.5); float d=dis(p1,p2); cout<<\ } 四、程序阅读,写出下列程序的运行结果 1、# include void init(int=0,int=0); void valueX(int val){X=val;} int valueX( ){return X;} void valueY(int val){Y=val;} int valueY( ){return Y;} }; void Location::init(int initX,int initY) { X=initX; Y=initY; } void main( ) { Location A,B; A.init( ); cout< cout< cout< 2、#include int number; void set(int i); }; int number=3; void MyClass::set (int i) { number=i; } void main() { MyClass my1; int number=10; my1.set(5); cout< cout< #include A(double xx=0, double yy=0) { X=xx; Y=yy; cout<<″构造函数被调用(″< A(A &p) { X=p.X; Y=p.Y; } }; A f() { A a(1,2); return a; } void main() { A a(4,5); A b(a); b = f(); } 4、 #include private: int X,Y; public: A() { X=Y=0; cout<<\ } A(int xx,int yy) { X=xx;Y=yy; cout<< \ } ~A() { cout<<\ } }; void main() { A *p1=new A; delete p1; p1=new A(1,2); delete p1; } 参考答案: 一、 1、A 2、B 3、A 4、B 5、B 6、C 7、C 8、D 9、B 10、B 11、B 12、C 13、C 14、D 15、D 16、D 17、D 18、B 19、C 20、C 二、 1、对象 2、对象 3、参数类型或参数个数 4、实例 5、this 6、形参 7、友元 8、继承 9、外部接口 10、析构 11、~AB() 12、局部对象、对象 三、 1、 #include void main() { base test; test.init(3); cout< #include class line { private: int color;int startx,starty;int len; public: friend int same_color(line a,box b); void set_color(int c){color=c;} void define_line(int x,int y){startx=x;} }; int same_color(line a,box b) { if(a.color==b.color) return 1; return 0; } int main() { line L; box B; L.set_color(2); B.set_color(3); cout< int *a; int n; public: A(int nn=0):n(nn){ if(n==0)a=0; else a=new int[n]; } ~A() {delete []a;}//定义析构函数,释放动态数组空间 }; 4、 # include private: float x,y; public: loc(float x1,float y1) { x=x1; y=y1; } float getx( ){return x;} float gety( ){return y;} friend float dis(loc&,loc&); }; float dis(loc&a,loc&b) { float dx=a.x-b.x; float dy=a.y-b.y; return sqrt(dx*dx+dy*dy); } void main( ) { loc p1(3.5,4.5),p2(5.5,6.5); float d=dis(p1,p2); cout<<\ } 四、 1、 0 5 0 6 4 2、 5 10 3 3、 构造函数被调用(4,5) 构造函数被调用(1,2) 4、 Default Constructor called. Destructor called. Constructor called. Destructor called.
正在阅读:
C++清考资料类和对象06-20
中学生科技实践活动报告.03-29
医院聘用申请书3篇02-24
世界贸易组织的基本原则05-05
县水利局工作总结及2022年重点工作安排08-02
学前教育小学化论文03-08
安全生产职业危害防治制度汇编07-25
项目的施工组织设计 - 图文01-03
开学第一课讲话稿(精选3篇)04-29
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- C++
- 对象
- 资料
- 第3章-面向对象程序设计-上机实验要求 (1)
- 变频协调控制技术在引风变频系统改造中的应用 - 图文
- 优化方案生物必修1(苏教版)第五章第一节第2课时课时作业
- 国土资源宣传工作计划精选
- 2018-2019年小学英语陕旅版(三起)《六年级下》Lesson 3 How wa
- 南京市政府印发关于进一步规范工业及科技研发用地管理意见的通知
- 06-5 高压开关安装质量管理
- 小学三年级语文下册第二单元作文指导
- 浙江省衢州市2015年中考数学试题(word版,含解析)
- 尊正高清液晶监视器 - 图文
- 论《百年孤独》的魔幻现实主义特征
- 《红星照耀中国》练习题2
- 配电箱技术要求
- 尔雅探索发现-生命期末考试答案2
- 卸料平台拆除安全技术交底
- 财务会计
- 《房地产商务谈判与十大经典案例特训营》
- 美的空调行业战略分析
- 传感器课程考核论文 - 图文
- 单位预算管理内部控制制度