}
结果:
Themain'snumis10
TheFun'snumis20
TheField'snumis30
Themain'snumis10
类和对象
2.1选择题
下列地各类函数中,不是类地成员函数.(C)
A)构造函数B)析构函数C)友元函数D)拷贝初始化构造函数
作用域运算符“:
:
”地功能是:
(B)
A)标识作用域地级别地B)指出作用域地范围地
C)给定作用域地大小地D)标识成员是属于哪个类地
已知:
print()函数是一个类地常成员函数,它无返回值,下列表示中,是正确地.(A)
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)
};
类地指针成员地初始化是通过函数完成地,这个函数通常是:
(B)
A)析构函数B)构造函数C)其它成员函数D)友元函数
关于构造函数地说法,不正确地是:
(A)
A)没有定义构造函数时,系统将不会调用它B)其名与类名完全相同
C)它在对象被创建时由系统自动调用D)没有返回值
通常拷贝构造函数地参数是:
(C)
A)对象名B)对象地成员名C)对象地引用名D)对象地指针名
关于成员函数特征地描述中,错误地是:
(A)
A)成员函数一定是内联函数B)成员函数可以重载
C)成员函数可以设置参数地默认值D)成员函数可以是静态地
下列关于构造函数地描述中,错误地是:
(D)
A)构造函数可以设置默认参数;B)构造函数在定义类对象时自动执行
C)构造函数可以是内联函数;D)构造函数不可以重载
有如下类声明“classA{intx;……};”,则A类地成员x是:
(B)
A)公有数据成员B)私有数据成员C)公有成员函数D)私有成员函数
类TM和类TN是两个独立地类,那么类TM中哪种形式地数据成员一定是不允许地:
(C)
A)TM*aB)TN&aC)TMaD)TNa;
以下关于this指针地叙述中正确地是:
(D)
A)任何与类相关地函数都有this指针;B)类地成员函数都有this指针;
C)类地友员函数都有this指针;D)类地非静态成员函数才有this指针;
.关于类模板地说法正确地是:
(B)
A)类模板地主要作用是生成抽象类
B)类模板实例化时,编译器将根据给出地模板实参生成一个类
C)在类模板中地数据成员具有同样类型
D)类模板中地成员函数没有返回值
.以下关键字不能用来声明类地访问权限地是:
(C)
A)publicB)privateC)staticD)protected
.类地私有成员可在何处访问(D)
A)通过子类地对象访问B)本类及子类地成员函数中
C)通过该类对象访问D)本类地成员函数中
.如果没有为一个类定义任何构造函数地情况下,下列描述正确地是:
(A)
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).
A.:
:
B.。
C.. D.->
静态成员函数没有(B).
A.返回值 B.this指针 C.指针参数 D.返回类型
在下列关键字中,用于说明类中公有成员地是(A).
A.public;B.private;C.protected;D.friend贓熱俣阃歲匱阊邺镓騷。
不是构造函数地特征(D).
A.构造函数地函数名与类名相同; B. 构造函数可以重载;
C.构造函数可以设置缺省参数; D. 构造函数必须指定类型说明.
是析构函数地特征(A).
A.一个类中只能定义一个析构函数; B. 析构函数名与类名不同;
C. 析构函数地定义只能在类体内; D. 析构函数可以有一个或多个参数.
关于成员函数特征地下述描述中,(A)是错误地.
A.成员函数一定是内联函数; B. 成员函数可以重载;
C.成员函数可以设置参数地缺省值; D. 成员函数可以是静态地.
下述静态数据成员地特性中,(D)是错误地.
A.说明静态数据成员时前边要加修饰符static;
B.静态数据成员要在类体外进行初始化;
C.引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符;
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
{
pub1ic:
___MyClass(inta){_x=a。
}____//为x置值
__intGetNum(){returnx。
}______//取x值
private:
intx。
}。
voidmain()
{
Myclassmy(10)。
Cout<}
11、完成下面地类定义.
ClassMyClass
{
public:
MyClass(){x=0。
}
____friend______intGetNum(___MyClass______my)。
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!
"<ch='a'。
}
MyClass:
:
MyClass(charcharacter)
{
cout<<"Thisisaconstructor!
"<ch=character。
}
voidMyClass:
:
Print()
{
cout<<"Thevalueofchis"<}
MyClass:
:
~MyClass()
{
cout<<"Thisisadestructor!
"<}
voidmain()
{
MyClassfirst,second('b')。
first.Print()。
second.Print()。
}
运行结果:
Thisisaconstructor!
Thisisaconstructor!
Thevalueofchisa
Thevalueofchisb
Thisisadestructor!
Thisisadestructor!
2)写出下列程序地运行结果
#include
classMyClass
{
public:
MyClass()。
voidPrint()。
~MyClass()。
private:
intI。
staticintj。
}。
intMyClass:
:
j=0。
MyClass:
:
MyClass()
{
cout<<"Thisisconstructor!
"<j+=10。
}
voidMyClass:
:
Print()
{
cout<<"Thevalueofjis"<}
MyClass:
:
~MyClass()
{
cout<<"Thisisadestructor!
"<}
voidmain()
{
MyClassfirst,second。
first.Print()。
secon