}
答案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