吉林大学面向对象程序设计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
相关推荐: