第一范文网 - 专业文章范例文档资料分享平台

吉林大学2005-06面向对象程序设计期末试题

来源:用户分享 时间:2025/5/29 3:21:20 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

吉林大学面向对象程序设计2005-2006期末

考试试题

2010-03-11 10:13:04 来源:大学期末考试试题 浏览:627次

吉林大学面向对象程序设计2005-2006期末考试试题

1. 已知f1和f2是同一类中的两个成员函数,若f1的实现代码体内不能调用f2,则可能的情况是:

(A) f1和f2都是静态函数 (B) f1是静态的,f2不是 (C) f1不是静态的,f2是静态的 (D) f1和f2都不是静态函数 2. 一个对象所占的内存空间中可以保存下面哪类数据?

(A) 静态数据成员 (B) 内联函数代码

(C) 所有成员函数的入口地址 (D) 虚函数表的入口地址 3.下面关于new 和delete操作符的说法,哪个是不正确的: (A) 使用new操作符,可以动态分配全局堆中的内存资源。 (B) 用new申请的数组,必须用delete[] 释放。

(C) 用new申请的空间,即使不调用delete释放掉,当程序结束时也会自动释放掉。 (D) 执行语句A * p=new A[100];时,类A的构造函数会被调用100次。 4、下列哪种函数可以是虚函数:

(A) 自定义的构造函数 (B) 拷贝构造函数 (C) 静态成员函数 (D) 析构函数 5.C++的最小编译单位是:

(A) 工程中每个.cpp和.h文件 (B) 工程中每个.cpp文件 (C) 工程中每个.h文件

(D) 工程中所有文件

6.下面表达式中不可能作为左值(赋值运算符左侧)的是: (A) a=b

(B) *p

(C) f(a,b)

(D) &a

7.在实现函数 A& f(A & obj) 时,下面的哪一个表达式可以出现在return 语句中? (A) new A( ) (B) obj (C) &obj (D) new A(obj) 8.判断类A的两个对象a1与a2是否是同一个对象的方法是: (A) 利用调试器,查看a1与a2各成员数据的值是否相等

(B) 重载 == 运算符,用它来判断各成员数据的值是否相等。 (C) 判断这两个对象的地址值是否相等。

(D) 比较创建时使用的构造函数的实参是否相同。 9.已知obj是一个对象,下面哪一个表达式是不可能出现的? (A) obj.100

(B) !obj

(C) obj++

(D) obj,100

10.下面哪种情况不属于函数重载: (A) 类中定义的运算符函数 (B) 同一个名字,参数个数不同

(C) 派生类中重新定义了一个和基类中的原型完全相同的函数

(D) 类中定义了两个同名、同参数表的函数,但其中一个是常成员函数

二、判断正误,对于你认为错误的论述,说明原因或举出反例。(每题2分,共20分)

1.使用语句A a=dynamic_cast(b);,可以将派生类B的对象b强制转换为基类A的对象。 2.在同一个类中,可以定义重载的成员函数 void f(int& anInt);和void f(int anInt); 3.虚拟继承的概念是为了实现多态性的要求而引入的。

4.若常量成员函数(用const 修饰的成员函数)中调用同一个类中的虚函数f,那么函数f也一定是一个常量成员函数。

5.类D以public方式继承类B,若在这两个类中以同样的方式分别声明了一个同名的整型成员变量x ,那么,为类D的对象分配内存空间时,不需要为类B中声明的x分配空间。

6.实例化派生类对象时,一定会调用到基类的某一个构造函数。

7.如果类A是类B的友员,类D以public继承方式从类B继承,则类A也是类D的友员。 8.对于任意按照语言规范定义并实现的类A,系统都可以为它提供一个无参数的构造函数,因此,在任何情况下都可以用new A;的方式产生A类的对象。 9.异常是程序运行过程中产生的错误。

10.设有函数说明void f(const int&); 则在调用该函数时,提供的参数既可以int型变量,又可以是int型常量。

三、指出下列程序代码中存在的错误并说明错误原因。(每题5分,共10分) 1.

#include class A{ public: private: }; class B{ public: A( ) { } private: int a; }; class C :public: B( ) { } private: int b; }; 2. //交换A类的两个对象a和b的值 void MySwap(A& a, A& b) { A& temp=a; a=b; b=temp; } 四、回答下列各题(每题4分,共20分) 1. 说明为什么不能在类的静态成员函数的实现体中使用this 指针。 2. 举例说明protected关键字的两种用法和相应目的。 3. 类的数据成员在哪些情况下必须在初始化列表中进行初始化。 4. 说明出现在下面头文件中的预处理指令的作用。 #ifndef __MYFILE_H_ #define __MYFILE_H_ … //头文件内容 #endif //__MYFILE_H_ 5. 为了能够将类B的对象赋值给类A的对象,在定义这两个类时可以采取哪些手段?至少说明两种不同的处理方法。 五、阅读下面两个类的定义和部分实现代码,完成3个问题。(共10分) #include class Base { friend ostream& operator<<(ostream&, const Base& ); public: virtual ~Base( ) {} private: virtual void Out(ostream & os) const =0; }; class D2:public Base { public: D2(int n):y(n) {} virtual ~D2( ) {} private: virtual void Out(ostream & os) const { os << \ int y; }; class D1:public Base { public: D1(int n):x(n),y(n*n) { } virtual ~D1( ) { } private: virtual void Out(ostream & os) const { os << \ int x, y; }; int main( ) { D1 d1(10); D2 d2(20); cout<

吉林大学2005-06面向对象程序设计期末试题.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c41q249brlh9jajr89may_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top