第九章 关于类和对象的进一步讨论 复习题 下载本文

第九章 关于类和对象的进一步讨论 复习题

1. 关于new运算符的描述,错误的是( ) A.它可以用来动态创建对象和对象数组

B.使用它创建的对象和对象数组可以使用运算符delete删除 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. 类的析构函数的作用是( ) A.一般成员函数 B.类的初始化

C.对象的初始化 D.删除对象

8.关于析构函数的说法,错误的是( ) A.析构函数是与构造函数作用相反的函数 B.析构函数不返回任何值

C.析构函数没有函数类型,也没有函数参数 D.析构函数可以被重载

9.关于构造函数的说法,错误的是( ) A.在类对象进入其作用域时调用构造函数 B.构造函数没有返回值

C.不需要在定义构造函数时声明类型 D.构造函数可以被用户调用

10.引入内联函数的主要目的是( ) A. 缩短程序代码,少占用内存空间

B. 既可以保证程序的可读性,又能提高程序的运行效率 C. 占用内存空间少,执行速度快 D. 使程序的结构比较清晰

11.一个类的静态数据成员所表示的属性确切地说( ) A. 是类的或对象的属性 B. 只是对象的属性 C. 只是类的属性 D. 是类和友元的属性

12. 有如下对象数组定义语句:MyClass *p[10];当对象指针数组p离开它的作

用域时,系统自动调用该类析构函数 次。0 13. 已知:类A中一个成员函数说明如下: void Set(A&a);

其中,A&的含义是( ) A. 指向类A的指针为a B. 将a的地址值赋给变量Set

C. a是类A对象的引用,用来作函数Set()的参数 D. 变量A与a按位与作为函数Set( )的参数 14. 重载函数是( )

A. 以函数参数来区分,而不用函数的返回值来区分不同的函数 B. 以函数的返回值来区分,而不用函数参数来区分不同的函数 C. 参数表完全相同而返回值类型不同的两个或多个同名函数 D. 参数表和返回值类型都必须是不同的两个或多个同名函数 15.关于构造函数的说法,错误的是( ) A.构造函数的函数体中可以对数据成员赋初值

B.构造函数的函数体中可以包含赋值语句之外的其他语句

C.如果用户没有定义构造函数,则C++系统会自动生成一个构造函数

D.只能在类内对构造函数进行声明,不能在类外定义构造函数 16. 关于模板的描述,错误的是( )

A.函数模板是模板的定义,在编译时生成函数模板的代码 B.模板类是实实在在的类的定义,可以定义模板类的对象 C.模板类是是类模板的实例化

D.模板函数可以进行重载

17. 在C++中,数据封装要解决的问题是( ) A. 数据的规范化 C. 避免数据丢失

B. 便于数据转换

D. 防止不同模块之间数据的非法访问

18. 有如下定义语句:MyClass *p;,则执行 p=new MyClass; 语句时,将自动调用

该类的构造函数。执行delete p;语句时,将自动调用该类的 。 若要把类FriendClass定义为类MyClass的友元类,则应在类MyClass的定义中加入语句_ 。 析构函数 friend class FriendClass

19.有如下对象数组定义语句:MyClass p[10];当对象数组p离开它的作用域时,

系统自动调用该类析构函数 次。10

20. 有如下定义语句: MyClass p[10],*q;则系统自动调用该类构造函数 10

次。

21. 假定用户没有给一个名为MyClass的类定义析构函数,则系统为其定义的默

认析构函数形式为 。~MyClass()

22. 类中的构造函数是一个特殊的成员函数,它由类的对象自动调用,它的作用

是 。进行初始化

23. 假定用户没有给一个名为MyClass的类定义析构函数,则系统为其定义的默认析构函数形式为 。24.~MyClass()

24. 在定义类的对象时,C++程序将自动调用该对象的 函数初始化对象自身。25.构造

26. 在C++语言中,每个类都有一个隐含的指针叫做 指针。该指针指向正在调用成员函数的对象。26. this

27. 非成员函数应声明为类的 才能访问这个类的private成员。

友元函数

28. 类中的构造函数是一个特殊的成员函数,它由类的对象 调用,

它的作用是进行初始化。自动

29 假定用户没有给一个名为MyClass的类定义析构函数,则系统为其定义的默

认析构函数形式为 。~Myclass()

30. 非成员函数应声明为类的 才能访问这个类的protected成员。

友元函数

31. 在面向对象的程序设计中,通过 实现数据隐藏;通过继承

实现代码的复用。 函数名重载是指同一作用域内的多个函数使用相同的函数名,这些同名函数通过它们的 进行区分。.封装 不同的参数表

32. 在定义类的对象时,C++程序将自动调用该对象的 函数。类中构

造函数可以有一个或多个,析构函数最多有 个。构造 一个 33.下列程序在构造函数和析构函数中申请和释放类的私有成员指向的堆空间,

请完成该类的实现。 Class MyClass{ public:

~MyClass(); private: int *X; };

MyClass::MyClass(int a){ ; }

MyClass::~Myclass(){

; }

34. MyClass(int a);

X=new int (a) delete X

34.下面的类定义了拷贝初始化构造函数,请完成该类的定义和实现。

Class MyClass { public:

MyClass(int xx=0,int yy=0){X=xx;Y=yy;} _______________ ;//拷贝初始化构造函数身明 private: