自测题13章.docx
- 文档编号:2059064
- 上传时间:2022-10-26
- 格式:DOCX
- 页数:17
- 大小:57.63KB
自测题13章.docx
《自测题13章.docx》由会员分享,可在线阅读,更多相关《自测题13章.docx(17页珍藏版)》请在冰豆网上搜索。
自测题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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 自测 13
![提示](https://static.bdocx.com/images/bang_tan.gif)