面向对象程序设计B 下载本文

内容发布更新时间 : 2024/11/16 15:20:38星期一 下面是文章的全部内容请认真阅读。

《 面向对象程序设计 》B

一、选择题(每题2分,共20分)

1、在C++语言中函数返回值的类型是由______C___决定的。 A)调用该函数时系统临时 B)return语句中的表达式类型 C)定义该函数时所指定的函数类型 D)调用该函数时的主调函数类型

解析:

返回值的类型是在函数声明时指定。

2、在函数定义前加上关键字inline\表示该函数被定义为____B_____。 A)重载函数 B)内联函数 C)成员函数 D)普通函数

解析:inline关键字用于定义内联函数。内联函数可以优化函数的执行速度,但是该关键字仅仅作为一个编译器提示,实际效果取决于编译器。

3、假定MyClass为一个类,则该类的拷贝初始化构造函数的声明语句为___C______。 A)MyClass &(MyClass x); B)MyClass (MyClass x) C)MyClass (MyClass &x); B)MyClass (MyClass *x)

解析:

A. 构造函数名包含无效字符&, 构造函数参数不能是MyClass x B. 构造函数参数不能是MyClass

C. 正确的拷贝构造函数定义之一,另一种形式是MyClass(const MyClass &);

D. 这只是一个普通的构造函数,不是拷贝构造函数,其参数是只想本类的指针。

4、下面对于友元函数描述正确的是___C______。 A)友元函数的实现必须在类的内部定义 B)友元函数是类的成员函数

C)友元函数破坏了类的封装性和隐藏性

第 1 页

D)友元函数不能访问类的私有成员

解析:

A.友元函数必须在类中声明(加上关键字friend),但是其定义在类中和类外都可以。 B.友元函数不是目标类的成员函数

C.友元可以直接访问类的任何成员,所以破坏封装和隐藏。 D.友元函数可以访问目标类中直接的任何成员

5、为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限..定义为_____A____。 A)public B)protected C)private D)static

解析:

“对象通过成员操作符访问”是指通过以下形式访问类成员:

objectName.memberName

由public修饰的成员都可以通过以上形式访问,所以答案选A

6、下面对静态数据成员的描述中,正确的是_____A____。 A)静态数据成员是类的所有对象共享的数据 B)类的每个对象都有自己的静态数据成员 C)类的不同对象有不同的静态数据成员值 D)静态数据成员不能通过类的对象调用

解析:

静态数据成员是独立于对象的数据成员,类的所有对象共享同一个静态数据成员。

7、关于new运算符的错误的描述是____A_____。 .. A)使用运算符new创建对象数组时必须定义初始值 B)使用运算符new创建对象时,会调用类的构造函数 C)运算符new可以用来动态创建对象和对象数组

D)使用new运算符创建的对象可以使用运算符delete删除

解析:

1.new运算符用于在堆中分配内存,如果是为类对象分配内存的话,new运算符会自动调用类的构造函数。

2.new建立的对象不会自行销毁,所以如果不使用堆对象,应该用delete运算符删除该对象,否则在对象将一直存在。

第 2 页

int main() { // 不停分配存储 }

while (true)

int *p = new int[1024];

8. 下列给字符数组进行初始化中,_____A_____是正确的。 A. char s1[ ]=\ B. char s2[3]=\

C. char s3[][3]={ 'a', 'x', 'y'}; D. char s4[2[3]={\ 解析:

A.比较灵活的定义字符数组的形式,在这种形式中编译器会自动计算字符串”12345abcd”的长度,然后分配适当的内存,最后将字符串拷贝到数组内。

B.“xyz”的是长度实际上是4个字节,但是s2的最大长度是3个字节,所以数组界限溢出。

C.有两处错误, 正确定义形式应该是:char s3[3][2] = { \, \, \ }; D.数组界限溢出 C、D都是定义数组的数组。

9、______A____是析构函数的特征。

A. 一个类中只能定义一个析构函数; B. 析构函数与类名不同;

C. 析构函数的定义只能在类体内; D. 析构函数可以有各个或多个参数。; 解析:

一个类中只能有一个析构函数,析构函数的名字格式是 ~类名();并且析构函数不能有参数和返回值。析构函数名字前的~字符时为了区别构造函数。

10、已知:p是一个指向类A数据成员m的指针,A1是类A的一个对象。如果要给m赋值为

第 3 页