}
结果:
Themain'snumis10
TheFun'snumis20
TheField'snumis30
Themain'snumis10
类和对象
2.1选择题
下列的各类函数中,不是类的成员函数。
(C)
A)构造函数B)析构函数C)友元函数D)拷贝初始化构造函数
作用域运算符“:
:
”的功能是:
(B)
A)标识作用域的级别的B)指出作用域的范围的
C)给定作用域的大小的D)标识成员是属于哪个类的
已知:
print()函数是一个类的常成员函数,它无返回值,下列表示中,是正确的。
A)voidprint()const;B)constvoidprint();
C)voidconstprint():
D)voidprint(const);
在类定义的外部,可以被访问的成员有(C)
A)所有类成员B)private的类成员
C)public的类成员D)public或private的类成员关于类和对象不正确的说法是:
(C)
A)类是一种类型,它封装了数据和操作B)对象是类的实例
C)一个类的对象只有一个D)一个对象必属于某个类
在C++中实现封装是借助于(B)
A)枚举B)类C)数组D)函数定义析构函数时,应该注意:
(C)
A)其名与类名完全相同B)返回类型是void类型
C)无形参,也不可重载D)函数体中必须有delete语句
类claseCC1的说明如下,错误的语句是:
(A)
claseCC1{inta=2;〃(A)
CC1();〃(B)
public:
CC1(intval);〃(C)
~CC1();〃(D)
};
类的指针成员的初始化是通过函数完成的,这个函数通常是:
A)析构函数B)构造函数C)其它成员函数
关于构造函数的说法,不正确的是:
(A
A)没有定义构造函数时,系统将不会调用它C)它在对象被创建时由系统自动调用通常拷贝构造函数的参数是:
(CA)对象名B)对象的成员名C)关于成员函数特征的描述中,错误的是:
A)成员函数一定是内联函数B)
C)成员函数可以设置参数的默认值下列关于构造函数的描述中,错误的是:
)
B)
D)
(B)
D)友元函数
其名与类名完全相同
没有返回值
)对象的引用名
(A)成员函数可以重载成员函数可以是静态的(D)
D)
D)对象的指针名
A)构造函数可以设置默认参数;B)构造函数在定义类对象时自动执行
C)构造函数可以是内联函数;D)
有如下类声明"classA{intx;…
A)公有数据成员B)私有数据成员类TM和类TN是两个独立的类,那么类A)TM*aB)TN&aC)TMaD)TNa以下关于this指针的叙述中正确的是:
A)任何与类相关的函数都有this
C)类的友员函数都有this指针;.关于类模板的说法正确的是:
(
A)类模板的主要作用是生成抽象类
B)类模板实例化时,编译器将根据给出的模板实参生成一个类
C)在类模板中的数据成员具有同样类型
D)类模板中的成员函数没有返回值.以下关键字不能用来声明类的访问权限的是:
A)publicB)privateC)staticD)protected.类的私有成员可在何处访问(D)
指针;
构造函数不可以重载
};”,则A类的成员x是:
(B)
C)公有成员函数D)私有成员函数
TM中哪种形式的数据成员一定是不允许的:
(C)
D
B)
D)
B)
)
类的成员函数都有this指针;类的非静态成员函数才有this指针;
A)通过子类的对象访问B)本类及子类的成员函数中
C)通过该类对象访问D)本类的成员函数中
.如果没有为一个类定义任何构造函数的情况下,下列描述正确的是:
A)编译器总是自动创建一个不带参数的构造函数B)这个类没有构造函数
C)这个类不需要构造函数D)该类不能通过编译
.一个类可包含析构函数的个数是:
(B)
A)0个B)1个C)0个或1个D)0个或多个
.一个类可包含构造函数的个数是:
(D)
A)0个B)0个或1个C)0个或多个D)1个或多个
.this指针存在的目的是:
(B)
A)保证基类公有成员在子类中可以被访问
B)保证每个对象拥有自己的数据成员,但共享处理这些数据成员的代码
C)保证基类保护成员在子类中可以被访问
D)保证基类私有成员在子类中可以被访问
.下列关于类的权限的描述错误的是:
(A)
A)类本身的成员函数只能访问自身的私有成员
B)类的对象只能访问该类的公有成员
C)普通函数不能直接访问类的公有成员,必须通过对象访问
D)一个类可以将另一个类的对象作为成员
•设类A将其它类对象作为成员,则建立A类对象时,下列描述正确的是:
(B)
A)A类构造函数先执行B)成员构造函数先执行
C)两者并行执行D)不能确定
.假定有类AB,有相应的构造函数定义,能正确执行“ABa(4),b(5),c[3],*p[2]={&a,&b};”语句,请问执行完此语句后共调用该类构造函数的次数为
(C)
A)3B)4C)5D)6
用对象调用成员函数用一般类型的数据初始化对象
拷贝构造函数的作用是(C)。
A.进行数据类型的转换B.
C.用对象初始化对象D.
列静态数据成员的特性中,错误的是(D)。
A.静态数据成员的声明以关键字static开头
B.静态数据成员必须在文件作用域内初始化
C.引导数据成员时,要在静态数据成员前加(类名)和作用域运算符
D.静态数据成员不是类所有对象共享的通过指针访问类对象成员的方法是(D)。
C..D.->
C.指针参数
D.返回类
A.:
:
B.;
静态成员函数没有(B)。
A.返回值B.this指针
型
A.public;B.private;C不是构造函数的特征(
A.构造函数的函数名与类名相同;
C.构造函数可以设置缺省参数;明。
是析构函数的特征(A)。
A.一个类中只能定义一个析构函数;
C.析构函数的定义只能在类体内;
参数。
关于成员函数特征的下述描述中,(
A.成员函数一定是内联函数;
C.成员函数可以设置参数的缺省值;下述静态数据成员的特性中,(
A.
B.
C.
D.
.protected;
.friend
D)。
B.
B.
构造函数可以重载;
D.构造函数必须指定类型说
析构函数名与类名不同;
D.
析构函数可以有一个或多个
A)是错误的。
是错误的。
static
D)
说明静态数据成员时前边要加修饰符静态数据成员要在类体外进行初始化;引用静态数据成员时,要在静态数据成员名前加静态数据成员不是所有对象所共用的。
B.
D.
成员函数可以重载;
成员函数可以是静态的。
<类名〉和作用域运算符;
2.2填空题
1、在撤销类的对象时,c++程序将自动调用该对象的—析构—函数。
2、类中的构造函数是一个特殊的成员函数,它由类的对象—自动—调用,它的作用是—为
对象分配内存,数据成员初始化___。
3、对类中的成员函数和属性的访问是通过public、__protected.和private这
3个关键字来控制的。
4、__delete运算符删除new运算符所动态分配的内存空间。
5、假定用户没有给一个名为MyClass的类定义析构函数,则系统为其定义的默认析构函数
形式为_MyClass()_。
6、类中构造函数有一个或多个,析构函数有______个。
7、类是对具有共同属性和行为的一类事物的抽象描述,共同属性被描述为类中的数据
成员,共同行为被描述为类中的成员函数。
8、若要把类FriendClass定义为类MyClass的友元类,则应在类MyClass的定义中加入语
句_friendclassFriendClass;。
9、在结构定义中,数据和成员函数默认权限是public。
在类定义中,数据和成员函数默认权限是private。
10、在下面程序的横线处填上适当的语句,使类型该程序执行结果为10。
#include
classMyClass
{
public:
MyClass(inta){x=a;}//为x置值
__intGetNum(){returnx;}//取x值
private:
intx;
};
voidmain()
{
Myclassmy(10);
Cout<}
11、完成下面的类定义。
ClassMyClass
{
public:
MyClass(){x=O;}
_friend_intGetNum(MyClassmy);
private:
intx;
};
intGetNum(MyClass_my)
{
returnmy.x;
}
12、__new_运算符对指定类型对象动态分配内存并返回该类型的「指针__。
13、若要把函数voidFriendFunction()定义为类MyClass的友元函数,则应在类MyClass
的定义中加入语句friendvoidFriendFunction();。
14、类的具体表现是通过定义—对象—来操作的。
15、在定义类的对象时,C++程序将自动调用该对象的—构造—函数初始化对象自身。
16、一般情况下,按照面向对象的要求,把类中的数据成员(属性)定义为__private_权限,而把成员函数(方法)定义为public权限。
17、在类中定义和实现的函数称为「内联函数
18、非成员函数应声明为类的__友元函数__才能访问这个类的private成员。
2.3简答题
A、类的含义
B构造函数的特点
C拷贝构造函数的调用
D析构函数的定义及其特点
E、静态成员的分类及各自的特点
2.4程序阅读题
1)写出下列程序的运行结果。
#include
classMyClass
charch;public:
MyClass();
MyClass(charcharacter);voidPrint();
~MyClass();
};
MyClass:
:
MyClass()
{
cout<<"Thisisaconstructor!
"<}
MyClass:
:
MyClass(charcharacter)
{
cout<<"Thisisaconstructor!
"<}voidMyClass:
:
Print()
{
cout<<"Thevalueofchis"<MyClass:
:
~MyClass()
{
cout<<"Thisisadestructor!
"<}voidmain(){
MyClassfirst,second('b');first.Print();
second.Print();
}运行结果:
Thisisaconstructor!
Thisisaconstructor!
ThevalueofchisaThevalueofchisbThisisadestructor!
Thisisadestructor!
2)写出下列程序的运行结果
#include
classMyClass
{public:
MyClass();voidPrint();
~MyClass();private:
intI;staticintj;
};
intMyClass:
:
j=0;MyClass:
:
MyClass()
{
cout<<"Thisisconstructor!
"<}
voidMyClass:
:
Print()
{
cout<<"Thevalueofjis"<MyClass:
:
~MyClass()
{
cout<<"Thisisadestructor!
"<{
MyClassfirst,second;first.Print();
second.Print();
}
Thisisconstructor!
Thisisconstructor!
Thevalueofjis20
Thevalueofjis20Thisisadestructor!
Thisisadestructor!
继承与派生
3.1选择题
.在C++中,类与类之间的继承关系具有(c)
A)自反性B)对称性C)传递性D)反对称性
.在公有继承的情况下,基类的成员(私有的除外)在派生类中的访问权限(B)
A)受限制B)保持不变C)受保护D)不受保护
.按解释中的要求在下列程序划线处填入的正确语句是:
(C)
#include
classBase{
public:
voidfun(){cout«"Base:
:
fun"«endl;}
};
classDerived:
publicBase{
p