自测题13章.docx

上传人:b****2 文档编号:2059064 上传时间:2022-10-26 格式:DOCX 页数:17 大小:57.63KB
下载 相关 举报
自测题13章.docx_第1页
第1页 / 共17页
自测题13章.docx_第2页
第2页 / 共17页
自测题13章.docx_第3页
第3页 / 共17页
自测题13章.docx_第4页
第4页 / 共17页
自测题13章.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

自测题13章.docx

《自测题13章.docx》由会员分享,可在线阅读,更多相关《自测题13章.docx(17页珍藏版)》请在冰豆网上搜索。

自测题13章.docx

自测题13章

1、若要把函数voidFriendFunction()定义为类MyClass的友元函数,则应在类MyClass的定义中加入语句_________。

答案friendvoidFriendFunction();

2、非成员函数应声明为类的_________才能访问这个类的private成员。

答案友元函数

3、_________运算符删除【3.25】题中的运算符所动态分配的内存空间。

答案delete

4、在下面程序的横线处填上适当的语句,使类型该程序执行结果为10。

#include

classMyClass

{

pub1ic:

______①_________//为x置值

______②_________//取x值

private:

intx;

};

voidmain()

{

Myclassmy(10);

Cout<

}

答案MyClass(inti){x=i;}intGerNum(){rerurnx;}

5、在C语言中,编程的单位是___①___:

在C++语言中,编程的单位是___②___。

答案函数,类

6、在类中定义和实现的函数称为_________。

答案内联函数

7、在撤销类的对象时,C++程序将自动调用该对象的_________函数。

答案析构

8、对类中的成员函数和属性的访问是通过___①___、___②___和___③___这3个关键字来控制的。

答案公有(public)受保护(protected)私有(private)

9、类的具体表现是通过定义_________来操作的。

答案对象

10、类中的构造函数是一个特殊的成员函数,它由类的对象___①___调用,它的作用是___

②___。

答案

11、假定用户没有给一个名为MyClass的类定义析构函数,则系统为其定义的默认析构函数形式为_________。

答案~MyClass(){}

12、类中构造函数有___①___个,析构函数有___②___个。

答案一个或多个一个

13、下面的类中定义了一个关于星期的枚举类型,请完成下面的程序。

ClassMyClass

{

public:

enumWeek{Sun,Mon,Tue,Wed,Thu,Fri,Sat};

Weekweek;

}

voidfun(MyClass&my)

{

_________①______=______②______;___//将对象my的week赋值为所定义的枚举类型

//值为3的枚举量

}

答案my.week=Wed;

14、在结构定义中,数据和成员函数默认权限是___①___。

在类定义中,数据和成员函数默认权限是___②___。

答案公有(pubic),私有(private)

15、一般情况下,按照面向对象的要求,把类中的数据成员(属性)定义为___①___权限,而把成员函数(方法)定义为___②___权限。

答案私有(private),公有(pubic)

16、在定义类的对象时,C++程序将自动调用该对象的_________函数初始化对象自身。

答案构造

17、___①___运算符对指定类型对象动态分配内存并返回该类型的___②___。

答案new,指针

18、若要把类FriendClass定义为类MyClass的友元类,则应在类MyClass的定义中加入语句_________。

答案friendclassFriendClass;

19、假定用户没有给一个名为MyClass的类定义构造函数,则系统对其定义的默认构造函数形式为_________。

答案MyClass(){}

20、类是对具有共同属性和行为的一类事物的抽象描述,共同属性被描述为类中的___①___,共同行为被描述为类中的___②___。

答案数据成员成员函数

1、对于结构中定义的成员,其默认的访问权限为_________。

A)public

B)protected

C)private

D)static

答案

2、一个类的友元函数或友元类能够通过成员操作符访问该类的_________。

A)私有成员

B)保护成员

C)公用成员

D)所有成员

答案

3、假定MyClass为一个类,则执行MyClassa,b

(2),*p;语句时,自动调用该类构造函数_________次。

A)2

B)3

C)4

D)5

答案

4、下面对静态数据成员的描述中,正确的是_________。

A)静态数据成员可以在类体内进行初始化

B)静态数据成员不可以被类的对象调用

C)静态数据成员不能受private控制符的作用

D)静态数据成员可以直接用类名调用

答案

5、下面对于友元函数描述正确的是_________。

A)友元函数的实现必须在类的内部定义

B)友元函数是类的成员函数

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

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

答案

6、下面对静态数据成员的描述中,正确的是_________。

A)静态数据成员是类的所有对象共享的数据

B)类的每个对象都有自己的静态数据成员

C)类的不同对象有不同的静态数据成员值

D)静态数据成员不能通过类的对象调用

答案

7、在C++中,数据封装要解决的问题是_________。

A)数据的规范化

B)便于数据转换

C)避免数据丢失

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

答案

8、假定MyClass为一个类,则该类的拷贝初始化构造函数的声明语句为_________。

A)MyClass&(MyClassx);

B)MyClass(MyClassx)

C)MyClass(MyClass&x);

B)MyClass(MyClass*x)

答案

9、有如下类的定义。

空格处的语句是_________。

ClassMyClass

{

public:

MyClass(inta=0,intb=O)

{

X=a;

Y=b;

}

voidChange()const

{

X=10;,

Y+=10;

}

pnvate:

_____________________intX,Y;

};

A)static

B)const

C)mutable

D)不需要填入内容

答案关键字mutable是C++中一个不常用的关键字,他只能用于类的非静态和非常量数据成员。

一个对象的状态由该对象的非静态数据成员决定,所以随着数据成员的改变,对像的状态也会随之发生变化

,如果一个类的成员函数被声明为const类型,表示该函数不会改变对象的状态,也就是该函数不会修改类的非静态数据成员.但是有些时候需要在该类函数中对类的数据成员进行赋值.这个时候就需要用到mutable关键字了。

例如:

 classDemo

 {

  public:

  Demo(){}  ~Demo(){}

  public:

  boolgetFlag()const{m_nAccess++;returnm_bFlag;}

  private:

  intm_nAccess;  boolm_bFlag;

 };

intmain(){return0;}

  编译上面的代码会出现errorC2166:

l-valuespecifiesconstobject的错误

  说明在const类型的函数中改变了类的非静态数据成员.

  这个时候需要使用mutable来修饰一下要在const成员函数中改变的非静态数据成员

  m_nAccess,代码如下:

 classDemo

  {

  public:

  Demo(){}  ~Demo(){}

  public:

  boolgetFlag()const{m_nAccess++;returnm_bFlag;}

  private:

  mutableintm_nAccess;  boolm_bFlag;

  };

intmain(){return0;}

  这样再重新编译的时候就不会出现错误了

10、类的析构函数的作用是_________。

A)一般成员函数

B)类的初始化

C)对象的初始化

D)删除对象

答案

11、对类的构造函数和析构函数描述正确的是_________。

A)构造函数可以重载,析构函数不能重载

B)构造函数不能重载,析构函数可以重载

C)构造函数可以重载,析构函数也可以重载

D)构造函数不能重载,析构函数也不能重载

答案

12、为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为_________。

A)public

B)protected

C)private

D)static

答案

13、下面是类MyClass的定义,对定义中语句描述正确的是_________。

ClassMyClass

{

public:

voidMyClass(inta){X=a;}___//①

intf(inta,intb)______//②

{

X=a;

Y=b;

}

intf(inta,intb,intc=O)___//③会造成歧义

{

X=a;

Y=b;

Z=c;

}

staticvoidg(){X=10;}___//④

private:

intX,Y,Z;

};

A)语句①是类MyClass的构造函数定义

B)语句②和语句③实现类成员函数的重载

C)语句④实现对类成员变量X的更新操作

D)语句①、②、③和④都不正确

答案

14、对于下面定义的类MyClass,在函数f()中将对象成员n的值修改为50的语句应该是_________。

ClassMyClass

{

public:

MyClass(intx){n=x;}

voidSetNum(intnl){n=nl;}

private:

intn;

}

intf()

{

MyC1ass*ptr=newMyClass(45);

__________________

}

A)MyClass(50)

B)SetNum(50)

C)ptr->SetNum(50)

D)ptr->n=50

答案1、写出下列程序的运行结果。

#include

classMyClass

{

charch;

public:

MyClass();

MyClass(charcharacter);

VoidPrint();

~MyClass();

};

MyClass:

:

MyClass()

{

cout<<"Thisisaconstructor!

"<

ch='a';

}

MyClass:

:

MyC1ass(charcharacter)

{

cout<<"Thisisaconstructor

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1