第五章友元

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、const修饰符的语义是_________。

答案修饰在它左边出现的类型描述符

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

Class MyClass

{

public:

MyClass(int xx=0,int yy=0){X=xx;Y=yy;}

______ ①______ ;___ //拷贝初始化构造函数

private:

int X,Y;

};

MyClass::______ ②_________ //拷贝初始化构造函数的实现

{

X=______ ③______ ;

______ ④______ ;

}

答案①MyClass(MyClass &m)②MyClass(MyClass &m)③m.X ④Y=m.Y

4、当需要使用mt修饰的成员函数改变类中的数据成员时,可以使用_________个数据成员。答案此题不做

5、当一个类的成员是某一个类的对象时,该对象就被称为_________。

答案内嵌对象成员

6、当一个类对象的成员函数被调用时,该成员函数的_________指向调用它的对象。

答案this指针

7、有如下定义语句: MyClass p[10];则系统自动调用该类构造函数___①___次。当类对象数组p离开它的作用域时,系统自动调用该类析构函数___②___次。

答案10,10

8、指向数组的指针是指_________。

答案该指针指向一个数组,可以指向任何一个数组元素

9、有如下定义语句:MyClass *p[10];,则当类对象数组指针p离开它的作用域时,系统自动调用该类析构函数_________次。

答案0

10、下列程序通过把类Distance定义为类Point的友元类来实现计算两点之间距离的功能。请完成该程序。

#include iostream.h>

#include

class Point

public:

______ ①______ ;

Point (______ ②______ )

{

X=a;

Y=b;

}

void Print()

{

cout<<"X="<

cout<<"Y="<

}

private:

float X,Y;

};

class Distance

{

public:

float Dis(Point &p,Point &q);

};

f1oat Distance::Dis(Point &p,Point &q)

{

float result;

______ ③______ ;

cout<

return result;

}

void main()

{

Point p(10,10),q(20,20);

Distance d;

d.Dis(p,q);

}

答案

11、如果一个类是聚集类,即该类定义了其他类的子对象,则该类的对象和子对象先被初始化的是_________。

答案该类的子对象

12、下列程序在构造函数和析构函数中申请和释放类的私有成员,请完成该类的实现。Class MyClass

public:

MyClass(int a);

~MyClass();

pnvate:

int *X;

};

MyClass::MyClass(int a)

{

______ ①______ ;

}

MyClass::~Myclass()

{

______ ②______ ;

}

答案X=new int(a) delete X

13、常量对象应_________,并且不能在生成之后修改。

答案定义时初始化

14、指针数组是指_________。

答案该数组中的每个元素都是指针

15、定义在类中的类被称为___①___,定义了类的类被称为___②___。

答案此题了解:内嵌类包容类

16、有如下定义语句:MyClass *p;,则执行p=new MyClass; 语句时,将自动调用该类的___①___。执行delete p;语句时,将自动调用该类的___②___。

答案构造函数析构函数

17、如果一个数组中的每个元素都是同一个类的对象,则该数组被称为_________。

答案对象数组

18、在C++语言中,每个类都有一个隐含的指针叫做___①___指针。该指针指向___②___。答案this 正在调用成员函数的对象

1、类MyClass的定义如下:

class MyClass

{

public:

MyClass(){value=0;}

setV ariable(int I){value =I;}

private:

int value;

};

则对下列语句序列正确的描述是_________。

MyClass*p,my;p=&my;

A)语句p=&my;是把对象my赋值给指针变量p

B)语旬MyClass *p,my;会调用两次类MyClass的构造函数

C)对语句*p.SetV ariable(5)的调用是正确的

D)语句p->SetV ariable(5)与语句my.SetV ariable(5)等价

答案

2、对于常成员函数,下面描述正确的是_________。

A)类的成员函数可以操作常对象

B)类的成员函数不能操作常对象

C)只有常成员函数可以操作常对象

D)在常成员函数中,常对象可以被更新

答案

3、包容类Contain和内嵌类Embed定义如下:

#include

class Contain

{

private:

int x;

protected:

int z;

public:

class Embed

{

private:

int y;

public:

Embed(){y=100;}

int Embed_Fun();

}MyEmbed;

int Contain_Fun();

};

对上面的定义,正确的描述是_________。

A)定义类Embed对象的语句是:Contain::Embed embed;

B)类Contain的成员函数Contain_Fun()中可以用MyEmbed.y的方式访问类Embed的私有成员y

C)类Embed的成员函数Embed_Fun()中可以直接访问类Contain的私有成员x

D)类Embed的成员函数Embed_Fun()中可以直接访问类Contain的保护成员z

答案

4、类MyClass的定义如下:

class MyClass

相关文档
最新文档