C复习题类.docx
《C复习题类.docx》由会员分享,可在线阅读,更多相关《C复习题类.docx(48页珍藏版)》请在冰豆网上搜索。
![C复习题类.docx](https://file1.bdocx.com/fileroot1/2022-10/12/c51c4fce-f6cc-4fd4-a93c-b4689303ddf2/c51c4fce-f6cc-4fd4-a93c-b4689303ddf21.gif)
C复习题类
一、单项选择题
1.有以下类的说明,请指出错误的地方A_。
classCSample
{
inta=2.5;(A)
Csample();(B)
public:
CSample(intval);(C)
-CSample();(D)
};
分析:
类的数据成员不能直接赋初值。
2.在C+十中,可以把具有相同内部存储结构和相同操作的对象看成属于同一类。
在指定一个类后,往往把属于这个类的对象称为类的①。
从语言角度来说,类是一种数据类型,而②是具有这种类型的变量。
A.实例B.实物C.特征D.对象
答:
①A②D
3.有关类的说法不正确的是。
A.类是一种用户自定义的数据类型
B.只有类中的成员函数才能存取类中的私有数据
C.在类中,如果不作特别说明,所有的数据均为私有类型
D.在类中,如果不作特别说明,所有的成员函数均为公有类型
答:
D
4.有关类和对象的说法下列不正确的有。
A.对象是类的一个实例
B.任何一个对象只能属于一个具体的类
C.一个类只能有一个对象
D.类与对象的关系和数据类型和变量的关系相似
答:
C
5.有关构造函数的说法不正确的是。
A.构造函数名字和类的名字一样
B.构造函数在说明类变量时自动执行
C.构造函数无任何函数类型
D.构造函数有且只有一个
答:
D
6.有关析构函数的说法不正确的是。
A.析构函数有且只有一个
B.析构函数无任何函数类型
C.析构函数和构造。
数一样可以有形参
D.析构函数的作用是在对象被撤消时收回先前分配的内存空间
答:
C
分析:
构造函数可以有形参,但析构函数不能有形参。
7.在类的定义体外定义成员函数时,需要在函数名前加上
(1),而在域外使用成员函数时,需要在成员名外加上②的名字。
A类标记B.类域标记C.类对象D.域运算符
答:
①B②C
8.若函数是在运行时被激活的,则该函数称为。
A内联函数B.非内联函数C.成员函数D.静态成员函数
答:
B
9.在类的定义形式中,数据成员、成员函数和组成了类定义体。
A.成员的访问控制信息B.公有消息C.私有消息
D.保护消息
答:
A
10.的功能是对对象进行初始化。
A.析构函数B.数据成员*胸造函数D.静态成员函数
答:
C
11.只能访问静态成员变量,静态成员函数和类以外的函数和数据不能访问类中的非静态成员变量。
A静态函数B.虚函数C.构造函数D.析构函数
答:
A
12.若却queue是类,aQueue是它的一个对象,pl是类对象aQueue的一个指针,那么类对象aQueue可以通过①来访问类的成员,类对象aQueue的指针p1可以通过②来访问类的成员。
A.:
:
B..C.;D.->
答:
①B②D
13.局部变量可以隐藏全局变量,那么在有同名全局变量和局部变量的情形时,可以用。
提供对全局变量的访问。
A域运算符B类运算符C.重载D引用
答:
A
14.在下列关键宇中,用以说明类中公有成员的是。
A.publicB.privateC.protectedD.friend
答:
A
15.下列的各类函数中,不是类的成员函数。
A构造函数B.析构函数C.友元函数D.拷贝初始化构造函数
答:
C
16.不是构造函数的特征。
A.构造函数的函数名与类名相同
B.构造函数可以重载
C.构造函数可以设置默认参数
D.构造函数必须指定类型说明
答:
D
17.是析构函数的特征。
A.一个类中只能定义一个析构函数
B.析构函数名与类名不同
C.析构函数的定义只能在类体内
D.析构函数可以有一个或多个参数
答:
A
18.通常拷贝初始化构造函数的参数是、。
A.某个对象名
B某个对象的成员名
C.某个对象的引用名
D.某个对象的指针名
答:
C
19.关于成员函数特征的下述描述中,是错误的。
A.成员函数一定是内联函数
B.成员函数可以重载
C.成员函数可以设置参数的默认值
D.成员函数可以是静态的
答:
A
分析:
成员函数可以是时联函数,也可以是非内联函数。
20.下述静态数据成员的特性中,是错误的。
A.说明静态数据成员时前边要加修饰符StatiC
B.静态数据成员要在类体外进行初始化
C.引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符
D.静态数据成员不是所有对象所共用的
答:
D
21.友元的作用。
。
A.提高程序的运用效率
B.加强类的封装性
C.实现数据的隐藏性
D.增加成员函数的种类
答:
A
22.类模板的使用实际上是将类模板实例化成一个具体的。
A.类B.对象C.函数D.模板类
答:
A
23.一个允许用户为类定义一种模式,使得类中的某些数据成员及某些成员函数的返回值能取任意类型。
A.函数模板B.模板函数C.类模板D.模板类
答:
C
24.模板是实现类属机制的一种l具,其功能非常强大,它既允许用户构造类属函数,即①;也允许用户构造类属类,即②。
A.模板函数B.函数模板C.模板类D.类模板
答:
①A②C
二、填空题
1.任何类中允许有三种类型的数据、、。
答:
publicprivateprotected
2.类中的数据和成员函数默认类型为。
答:
私有
3.结构中p玫据和成员函数默认类型为。
答:
公有
4.在类内部定义的数据不能被不属于该类的函数来存取,定义为的数据、函数则可以在类外部进行存取。
答:
pritvalepublic
5.是一种特殊的成员函数,它主要用来为对象分配内存空间,对类的数据成员进行初始化并执行对象的其他内部管理操作。
答:
构造函数
6.一个类有个析构函数。
答:
l
7.静态数据成员在定义或说明时前面要加上关键字。
答:
static
8.成员函数的实现中不能直接引用类中说明的非静态成员。
答:
静态
9.定义在类内部的函数为类默认状态,在类外部每次调用该函数时,定义的函数代码会在调用函数位置展开。
答:
内联函数
10.以下程序运行的结果为、。
#Include”iostream.h”
classCSample
{
private:
inti;
staticintk;
public:
CSample();
voidDisplay();
};
CSample:
:
CSample()
{
i=0;
k++;
}
voidCsample:
:
Display()
{
cout<<”i=”<
}
intcsample:
:
k=0;
voidmain()
{
CSamplea,b;
a.Display();
b.Display();
}
答:
i=0,k=2
i=0,k=2
11.以下程序运行的结果为_。
#Include”lostream.h”
classCSample
{
inti;
public:
CSample();
voidDisplay();
~CSample();
};
CSarnple:
:
CSample()
{
cout<<”Constructor”<<”,”;
i=0;
};
voidCSample:
:
~Display()
{
cout<<”i=”<
}
CSample:
:
~CSample()
{
cout<<”Destructor”<}
voidmain()
{
CSamplea;
a.Display();
}
答:
Constructor,i=0,Destructor
12.以下程序运行的结果为_。
#include”stream.h”
classCSample
{
inti;
public:
CSample();
CSample(intval);
voidDisplay();
~CSample();
};
CSample:
:
CSample()
{
cout<<”Constructor”<}
CSample:
:
CSample(intval)
{
cout<<”Constructor”<i=val;
}
voidCSample:
:
Display()
{
cout<<”i=”<
}
CSample:
:
~CSample()
{
cout<<”Destructor”<}
voidmain()
{
CSamplea,b(10);
a.Display();
b.Display();
}
答:
Constructor1
Constructor2
i=0
i=10
Destructor
Destructor
13.以下程序运行的结果为_。
#include”iostream.h”
C1assCCouter
{
intvalue;
public:
CCounter();
CCounter(intval);
~CCounter();
};
classCExample
{
intvalue;
public:
CCountercar;
CExample();
cexample(intval);
voidDISplay();
~CExample();
};
CCounter:
:
CCounter()
{
cout<<”ccounterConstructorl”<value=o;
}
CCounter:
:
CCounter(intval)
毛
cout<<”CCounterconstructor2”<value=val;
}
CCounter:
:
~CCounter()
{
cout<<”CCounterDestructor”<}
CExarnple:
:
CExample()
{
cout<<”CExampleconstructorl”<value=0;
}
CExample:
:
CExample(intval)
{
cout<<”CExamPleConstructorl”<value=val;
}
voidCExample:
:
Display()
{
cout<<”value=”<}
CExample:
:
~CExample()
{
cout<<”CExampleDestructor”<}
voidmain()
{
CExamplee
(2);
e.Display();
}
答:
ccounterConstructor2
CExampleConstructor2
Value=2;
CExampleDestmctor
CCoullterDestructor
14.以下程序运行的结果为。
#include<iostream.h>