ImageVerifierCode 换一换
格式:DOC , 页数:6 ,大小:91.50KB ,
资源ID:1257527      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/1257527.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(《C++面向对象程序设计》期末考试试题.doc)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

《C++面向对象程序设计》期末考试试题.doc

1、C+面向对象程序设计考试试题 本试卷满分100分; 请将答案写在答题纸上,写明题号,不必抄题,字迹工整、清晰; 请在答题纸和试题纸上都写上你的班级,学号和姓名,交卷时请将试题纸、答题纸和草纸一并交上来。 一、 单选题(共10分,每题1分) 1. C+中解决命名冲突的机制是:D(A) 虚基类 (B) 虚函数 (C) 函数重载 (D) 名字空间2. 若类A的一个对象所占的内存空间中包含虚函数表的入口地址,则: C(A) 类A不能有静态数据成员(B) 类A中公有的成员函数一定是虚的(C) 类A中至少有一个成员函数是虚的(D) 类A的析构函数一定是虚的3任意一个类,析构函数的个数最多是:B(A) 不限

2、个数 (B) 1 (C) 2 (D) 34 下列关于this指针的说法,哪个是正确的: D(A) this指针一定指向常量型数据 (B) this指向的数据不可更改(C) 静态成员函数中也可以访问this指针 (D) this指针本身可直接作为成员函数的返回值5在类定义中,为说明成员的访问权限,private, protected, public 可以出现次数为:A(A)次数没有具体限定 (B) 每种至多一次(C) public 至少一次 (D) 每种至少一次6下面哪种定义方式是正确的,并且使得p可以作为函数void f( A* const pp);的实参:A(A)A * p = new A;

3、 (B)A a; A* p = a; (C)const A* p = new A; (D)A a; const A* p = a;7 obj是类A的一个对象,执行语句 const A& aA= obj; ,则下列说法正确的是: C(A)类A的拷贝构造函数会被调用 (B)类A的赋值函数会被调用(C)&aA的值就是 &obj (D) 语句obj.f( );等价于语句aA.f( );8下面关于访问类A的私有数据成员的说法,错误的是: C(A)类A的友元函数可以访问类A的私有成员。 (B)类A的友元类中的非静态成员函数可以访问类A的私有成员。(C)类A的嵌套类中的非静态成员函数可以访问类A的私有成员。

4、(D)类A中的非静态成员函数可以访问类A的私有成员。 9类A中有唯一的一个成员函数f,且f是公有的静态或非静态成员函数,对于类A的一个对象a,执行语句 a.f(100);成功,那么f 的函数原型不可以是:B(A) A& f( int, int=50 ); (B) void f(int& ) ;(C) const A * f(const int ); (D) A f( const int&);10. 下面关于类的成员函数描述不正确的是:A(A) 静态成员函数内可以直接访问类的非静态成员数据(B) 静态成员函数内可以直接访问类的静态成员数据(C) 非静态成员函数可以直接访问类的非静态成员数据(D)

5、 非静态成员函数可以直接访问类的静态成员数据(全局成员)二、判断正误,对于你认为错误的论述,说明原因或举出反例。(每题2分,共20分)1. 重载流操作符 时,如果第一个参数的类型为ostream 和istream,那么这个重载函数既可以用于标准输入输出流,也可以用于文件流上。对,ostream 和istream是标准输入输出流、文件流、字符串流的基类2. 在同一个类中,可以定义重载的成员函数 void f(int);和virtual void f(int); 。错,这属于重复定义3. 抽象类不会产生实例,所以不需要有构造函数。错,被派生时需要它的构造函数4. 类A有一个非静态的成员函数f,其函

6、数原型是:void A:f( ) const,则该函数被调用时,一定是通过类A或类A的某后裔类的一个用const修饰符说明的常量对象调用的。错,常函数可以由变量对象或常量对象调用5. 异常必须在其产生的当前函数中捕获,而不能在外层函数中捕获该异常。错,可以在外层捕获,并且这是最常见的用法6. 只要程序中没有A a1 = a2; 和A a1(a2); 形式的代码,类A的拷贝构造函数就不会被调用。错,参数传递或函数返回时也调用拷贝构造函数7. 在protected继承方式下,派生类对象的指针不能直接转换成指向基类对象的指针。对,否则基类中的公有成员由不可见变为可见,权限被放大8. 若静态成员函数中

7、调用了一个函数f,那么f 一定不是虚函数。对,静态成员函数不能是虚函数,因为虚函数入口需要在保存在对象中的虚函数表中,而静态成员函数不属于对象。9. 若要实例化一个含有引用型数据成员的类,那么只能使用构造函数初始化列表来初始化该数据成员。对,没有别的办法10. 构造函数的函数体中,不能使用return语句;但在实现该类的自动类型转化函数时,必须有return 语句。对三、回答下列各题(每题4分,共20分)1. 举例说明static关键字的用法和相应目的(至少3种)。f() static int a; 函数体内的静态变量,每次调用该函数时值保持不变static int a; 全局的静态变量,约束

8、作用域为所在文件class A static int a; A的静态成员,类似全局变量,需用A:a访问2. 举例说明类的数据成员在哪些情况下必须在初始化列表中进行初始化(至少3种)。基类不提供无参的构造函数成员对象不提供无参的构造函数有常量成员或引用成员3. 举例说明虚拟继承的作用和目的。虚拟继承的目的是使基类在派生类中只保留一个副本从而避免二义性4. 举例说明成员函数A& f( ) const;和成员函数A& f( ); 的区别。A& f( ) const是常函数,隐含的this指针是常指针,因此在f中不能修改对象成员的值。举例略5. 有类A的对象a,任意给出一种解决方案,使得程序支持下面的

9、表达式:a=10+a; class A A(int); /转换构造函数friend const A operator+(const A,const A); /重载+;四、指出下列程序代码中存在的错误或不足,说明原因。(每题5分,共10分)1#includeclass A public: virtual A( ) virtual void f( ) coutA:f( )endl; virtual void g( ) coutA:g( )endl; ;class B:public Apublic: virtual void g( ) coutB:g( )endl; virtual void k(

10、) coutB:k( )f( ); p-g( ); p-k( ); delete p;答:函数k在A中没有定义,执行p-k( );时要根据p的类型在A中查k的信息2#include#includeclass A;class B:public A public: B(const char* info) m_buf=new char256; strcpy(m_buf,info); B( ) delete m_buf; virtual void output( ) cout output( ); delete pa; 答:A的析构函数应定义为虚函数,否则B的析构函数不会被调用,m_buf也不会被释放

11、五、写出下面程序的运行结果(每题5分,共10分) 1#include class A public: A( ):count(1) virtual A( ) virtual A* Copy( ) const = 0; virtual void Out( ) const = 0;protected: int count;class B:public A public: B( ) -count; Out( ); virtual A* Copy( ) const B *p = new B(*this); +p-count; return p; virtual void Out( ) const cou

12、t count Out( ); a1 = a1-Copy( ); a1-Out( ); delete a1; 答:1210 -2#include class A public: A(int n):num(n) Out( ); A(const A& rhs):num(rhs.num) Out( ); void Out( ) coutnumendl; public: int num;class B:public A public: B(A& a) :obj(a),A(1) void Out( ) obj.Out( ); private: A obj;void main( ) A a(8); B b1(a); B b2(b1); b2.Out();答:818188-六、阅读下面两个类的定义和部分实现代码,完成3个问题。(共10分)#includeclass A public: A(int n):value(n) void Display( ) c

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1