面向对象程序设计教程 答案 下载本文

【结果分析】

this指针是由C++编译器自动产生且较常用的一个隐含对象指针,它不能被显式声明。当创建一个对象时,this指针就初始化指向该对象。但只有非静态成员函数才拥有this指针,并通过该指针来处理对象。 (14) 下列关于子对象的描述中,( B )是错误的。 A. 子对象是类的一种数据成员,它是另一个类的对象 B. 子对象可以是自身类的对象

C. 对子对象的初始化要包含在该类的构造函数中 D. 一个类中能含有多个子对象作其成员 【结果分析】

子对象不可以是自身类的对象。

(15) 对new运算符的下列描述中,( B )是错误的。 A. 它可以动态创建对象和对象数组 B. 用它创建对象数组时必须指定初始值 C. 用它创建对象时要调用构造函数

D. 用它创建的对象数组可以使用运算符delete来一次释放 【结果分析】

使用运算符new创建对象数组的格式如下:

new <类型说明符> [<算术表达式>]

其中,<算术表达式>给出数组的大小,后面不能再跟构造函数参数,所以用它创建对象数组时不能指定初始值。

(16) 对delete运算符的下列描述中,( D )是错误的。 A. 用它可以释放用new运算符创建的对象和对象数组

B. 用它释放一个对象时,它作用于一个new所返回的指针

C. 用它释放一个对象数组时,它作用的指针名前须加下标运算符[ ] D. 用它可一次释放用new运算符创建的多个对象 【结果分析】

用delete一次只能释放用new创建的1个对象,但可释放一个对象数组。 (17) 关于静态数据成员,下面叙述不正确的是( C )。 A. 使用静态数据成员,实际上是为了消除全局变量

B. 可以使用“对象名.静态成员”或者“类名∷静态成员”来访问静态数据成员

C. 静态数据成员只能在静态成员函数中引用 D. 所有对象的静态数据成员占用同一内存单元 【结果分析】

静态数据成员可以在静态成员函数中引用,也可以在非静态成员函数中引用。 (18) 对静态数据成员的不正确描述是( CD )。 A. 静态成员不属于对象,是类的共享成员 B. 静态数据成员要在类外定义和初始化

C. 调用静态成员函数时要通过类或对象激活,所以静态成员函数拥有this指针 D. 只有静态成员函数可以操作静态数据成员 【结果分析】

this指针是一个局部量,局部于某个对象,而静态成员函数是属于整个类而不是某个对象,它没有this指针。静态成员函数和非静态成员函数均可操作静态数据成员。

(19) 下面的选项中,静态成员函数不能直接访问的是( D )。 A. 静态数据成员 B. 静态成员函数 C. 类以外的函数和数据 D. 非静态数据成员 【结果分析】

由于静态成员函数没有this指针,它只能直接访问该类的静态数据成员、静态成员函数和类以外的函数和数据,访问类中的非静态数据成员必须通过参数传递方式得到对象名,然后通过对象名来访问。

(20) 在类的定义中,引入友元的原因是( A )。

A. 提高效率 B. 深化使用类的封装性 C. 提高程序的可读性 D. 提高数据的隐蔽性 【结果分析】

友元的作用主要是为了提高效率和方便编程,但友元破坏了类的封装性和隐蔽性,使用时要权衡利弊。

(21) 友元类的声明方法是( A )。

A. friend class<类名>; B. youyuan class<类名>; C. class friend<类名>; D. friends class<类名>; (22) 下面对友元的错误描述是( D )。 A. 关键字friend用于声明友元

B. 一个类中的成员函数可以是另一个类的友元 C. 友元函数访问对象的成员不受访问特性影响 D. 友元函数通过this指针访问对象成员 【结果分析】

友元函数是一个放在类中的普通函数,它没有this指针。 (23) 下面选项中,( C )不是类的成员函数。

A. 构造函数 B. 析构函数 C. 友元函数 D. 拷贝构造函数 三、 简答题

(1) 类与对象有什么关系? 【问题解答】

类是一种用户自己定义的数据类型,和其他数据类型不同的是,组成这种类型的不仅可以有数据,而且可以有对数据进行操作的函数。程序员可以使用这个新类型在程序中声明新的变量,具有类类型的变量称为对象。创建对象时,类被用做样板,对象称为类的实例。

(2) 类定义的一般形式是什么?其成员有哪几种访问权限? 【问题解答】

定义类一般形式为:

class类名{

public:

<公有数据和函数>

protected:

<保护数据和函数>

private:

<私有数据和函数> };

访问权限共有3种: 分别是公有(public)、保护(protected)和私有(private)。 (3) 类的实例化是指创建类的对象还是定义类? 【问题解答】

指创建类的对象。

(4) 什么是this指针?它的主要作用是什么? 【问题解答】

this指针是C++语言为成员函数提供的一个隐含对象指针,它不能被显式声明。this指针是一个局部量,局部于某个对象。不同的对象调用同一个成员函数时,编译器根据this指针来确定应该引用哪一个对象的数据成员。 (5) 什么叫做拷贝构造函数?拷贝构造函数何时被调用? 【问题解答】

拷贝构造函数是一种特殊的构造函数,它的作用是用一个已经存在的对象去初始化另一个对象。为了保证所引用的对象不被修改,通常把引用参数声明为const参数。

在以下3种情况下,拷贝构造函数都会被自动调用: ◆当用类的一个对象去初始化该类的另一个对象时; ◆当函数的形参是类的对象,进行形参和实参结合时;

◆当函数的返回值是类的对象,函数执行完成返回调用者时。 四、 程序分析题(写出程序的输出结果,并分析结果) (1)

#include

using namespace std;

class Test {

private:

int num;

public:

Test();// 默认构造函数

Test(int n); // 带一个参数构造函数 };

Test∷Test() {

cout<<\

num=0; }

Test∷Test(int n) {

cout<<\

num=n; }

int main() {

Test x[2];// 语句1

Test y(15); // 语句2

return 0; }

【输出结果】

Init defa