8.类是对具有共同属性和行为的一类事物的抽象描述,共同属性被描述为类中的,共同行为被描述为类中的。
9.类Sample的构造函数将形参data赋值给数据成员data。
请将类定义补充完整。
classSample{
public:
Sample(intdata=0);
Private:
intdata;};
Sample:
:
Sample(intdata){
}
10.实现运行时多态,要使用函数。
11.设A为test类的对象且赋有初值,则语句testB(A);。
12.在MyClass类的定义中,对赋值运算符=进行重载。
请将画线处缺失的部分补充完整。
MyClass:
:
operator=(constMyClassrhs)
{
if(this=&rhs)return*this;
value=rhs.value;
return*this;}
13.C++语言中的每条基本语句以________作为结束符,每条复合语句以________作为结束符。
14.若p指针指向字符串“ABCDEFGHIJKL”,则语句cout<<*(p+5);的输出结果是________。
15.当一个函数或一个类希望能够直接访问另一个类中的非公用成员时,应该将该函数
声名为另一个类的________或________。
16.设px是指向一个类动态对象的指针变量,则执行“deletepx”语句时,将自动调用该类的_______函数。
17.C++中没有字符串类型,字符串是通过________来表示的,每一个字符串都有一个结尾字符________。
18.使用const语句定义一个标识符常量时,则必须对它同时进行________。
19.类test的析构函数名是。
20.建立对象时,为节省内存,系统只给_______分配内存。
21.类中的数据和成员函数默认访问类型为。
22.当建立一个新对象时,程序自动调用_______________。
23.在C++中,函数的参数有两种传递方式,它们是值传递和________。
24.若表达式(x+(y-z)*(m/n))+3中的变量均为double。
25.循环语句:
for(inti=50;i>20;i-=2)cout<
运行时循环体的执行次数是
26.任何类中允许有三种访问权限的数据,这三种访问权限分别是public
27.类是用户定义的类型,具有类类型的变量称为。
当建立一个新对象时,程序自动调用。
28.利用成员函数对二元运算符重载,其左操作数为,右操作数为
29.C++将类继承分为和两种。
30.派生类可以定义其_______________中不具备的数据和操作。
31.有如下类定义:
classSample{
public:
Sample();~Sample();
private:
staticintdate;};
将静态数据成员data初始化为0的语句是。
32.在保护继承方式下,基类的公有和保护成员成为派生类中的
33.若表达式(x+(y-z)*(m/n))+3中的变量均为double型,则表达式值的类型为。
34.类test的析构函数名是
35.在保护继承关系下,基类的公有成员和保护成员将成为派生类中的成员。
36.类是对具有共同属性和行为的一类事物的抽象描述,共同属性被描述为类中的,共同行为被描述为类中的。
37.在派生类的成员中有私有成员
38.在继承机制下,当对象消亡时,编译系统先执行的析构函数,然后才执行派生类中子对象类的析构函数,最后执行的析构函数。
39.在C语言中,编程的单位是在C++语言中,编程的单位是。
40.若表达式(x+(y-z)*(m/n))+3中的变量均为double型,则表达式值的类型为。
41.面向对象程序设计的机制提供了重复利用程序资源的一种途径。
42.非成员函数应声明为类的才能访问这个类的private成员。
43.派生新类的过程一般包括、、三个步骤。
44.C++程序的头文件和源程序文件扩展名分别为和。
45.循环语句:
for(inti=50;i>20;i-=2)cout<
运行时循环体的执行次数是
46.类中构造函数有个,析构函数有个。
47.有如下类定义:
classSample{
public:
Sample();
~Sample();
private:
staticintdate;};
将静态数据成员data初始化为0的语句是。
48.假定p所指对象的值为25,p+1所指对象的值为46,则执行“(*p)++;”语句后,p所指对象的值为。
49.若在类的定义体中只给出了一个成员函数的原型,则在类外给出完整定义时,其函数名前必须加上类名和两个________分隔符。
50.若需要把一个函数“voidF();”定义为一个类AB的友元函数,则应在类AB的定义中加入一条语句:
。
51.若要把类外定义的成员函数规定为内联函数,则必须把________关键字放到函数原型或函数头的前面。
52..为了避免在调用成员函数时修改对象中的任何数据成员,则应在定义该成员函数时,在函数头的后面加上________关键字。
53.程序段i=5;j=0;j=++i+j;输出结果为
54.类定义中,既包含数据成员,也包含________成员。
55.假定AB为一个类,则执行“ABa[10];”语句时,系统自动调用该类的构造函数的次数为,其构造函数名是。
56.假定一个类对象数组为A[N],当离开它的作用域时,系统自动调用该类析构函数的次数为________。
57.已知数组a中的元素个数为n,下列语句的作用是将下标为i的元素移动到下标为i-1的单元,其中1≤i<n。
例如,当n=4,a中原有数据为1,2,3,4时,则移动后a中元素为2,3,4,4。
请将语句补充完整:
for(inti=0;i58.是指对已有的运算符赋予多重含义。
59.带有的类称为抽象类,抽象类的特征是不能声明一个抽象类的,但可以声明一个抽象类的指针或引用。
60.若表达式(x+(y-z)*(m/n))+3中的变量均为double型,则表达式值的类型为。
61.设A为test类的对象且赋有初值,则语句testB(A);表示。
62.利用“对象名.成员变量”形式访问的对象成员仅限于被声明为的成员;若要访问其他成员变量,需要通过函数或函数。
63.是指同样的消息被不同类型的对象接收时导致不同的行为。
64.在继承机制下,当对象消亡时,编译系统先执行的析构函数,然后才执行派生类中子对象类的析构函数,最后执行的析构函数。
65.类中构造函数有个,析构函数有个。
66.循环语句:
for(inti=50;i>20;i-=2)cout<
运行时循环体的执行次数是
67.类是用户定义的类型,具有类类型的变量称为。
当建立一个新对象时,程序自动调用。
68.有如下类定义:
classSample{
public:
Sample();~Sample();
private:
staticintdate;};
将静态数据成员data初始化为0的语句是。
69.继承发生在利用现有类派生新类时,其中现有类称为,或父类;新类称
为,或子类。
70.利用“对象名.成员变量”形式访问的对象成员仅限于被声明为的成员;若要访问其他成员变量,需要通过函数或函数。
71.是指同样的消息被不同类型的对象接收时导致不同的行为。
二、单项选择题(每小题2分,共20分)
类中定义的成员默认为()访问属性。
A.publicB.privateC.protectedD.friend
如果一个函数无返回值,定义时它的函数类型应是()。
A.任意B.intC.voidD.无
下面的函数声明中,()是“voidBC(inta,intb);”的重载函数。
A.intBC(intx,inty);B.voidBC(inta,charb);
C.floatBC(inta,intb,intc=0);D.intBC(inta,intb=0);
与C语言printf(“Helloword\n”);语句功能相同的C++语句是()。
A.cout>>”Helloword\n”B.cin>>”Helloword\n”
C.cout<<”Helloword\n”D.cin<<”Helloword\n”
假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为()。
A.ABoperator+(AB&a,AB&b)B.ABoperator+(AB&a)
C.operator+(ABa)D.AB&operator+()
以下不正确的语句是()。
A.if(x>y);
B.if(x=y)&&(x!
=0)x+=y;
C.if(x!
=y)cin>>x;elsecin>>y;
D.if(xintx=-1;
do
{x=x*x;}
while(!
x);
下列说法正确的是()。
A.是死循环B.循环执行两次
C.循环执行一次D.有语法错误
下面函数()的表示方法说明它使用对象的引用作为参数。
A.test(pt*p)B.test(ptp)C.test(pt&p)D.test(constP)
下面叙述不正确的是()。
A.基类的保护成员在派生类中仍然是保护的
B.基类的保护成员在公有派生类中仍然是保护的
C.基类的保护成员在私有派生类中是私有的
D.对基类成员的访问必须是无两义性
下列运算符中,()运算符在C++中不能重载。
A.?
:
B.+C.-D.〈=
在C++中,打开一个文件就是将这个文件与一个()建立关联;关闭一个文件就是取消这种关联。
A.流B.类C.结构D.对象
对while、do…while循环结构,下面说法正确的是()。
A.只是表达形式不同
B.do…while结构中的语句至少执行一次
C.while结构中的语句至少执行一次
D.条件成立时,它们有可能一次也不执行
关于函数的调用下面不正确的是()。
A.由于程序总是从主函数开始,所以函数的调用总是在主函数和其他函数之间进行
B.函数的调用可以在任意函数之间进行,只要有需要
C.一个函数可以自己调用自己
D.函数返回时可以不必带返回值,这时函数在定义时其类型应用void表示关于函数的声明和定义正确的是()。
A.函数的声明是必须的,只有这样才能保证编译系统对调用表达式和函数之间的参数进行检测,以确保参数的传递正确
B.函数的定义和声明可以合二为一,可以只有函数定义即可
C.函数在声明时,其参数标识符可省略,但参数的类型、个数与顺序不能省略
D.函数的存储类型为外部型,所以可以在其他函数中被调用,它在定义时象其他外部变量一样,可以在其他函数内定义
用于类中虚成员函数说明的关键字是()。
A.publicB.virtualC.protectedD.private
有如下程序段:
inti=5;
while(inti=0){cout<<"*";i--;}
运行时输出“*”的个数是()
A.0B.1C.5D.无穷
运算符重载时不需要保持的性质是()
A.操作数个数B.操作数类型C.优先级D.结合性
有如下类定义和变量定义:
classA{
public:
A(){data=0;}~A(){}intGetData()const{returndata;}voidSetData(intn){data=n;}
private:
intdata;
};
constAa;
Ab;
下列函数调用中错误的是()
A.a.GetData();B.a.SetData(10);C.b.GetData();D.b.SetData(10);对类的构造函数和析构函数描述正确的是()
A.构造函数可以重载,析构函数不能重载;
B.构造函数不能重载,析构函数可以重载;
C.构造函数可以重载,析构函数也可以重载;
D.构造函数不能重载,析构函数也不能重载;
下列有关类的说法不正确的是()。
A.对象是类的一个实例
B.任何一个对象只能属于一个具体的类
C.一个类只能有一个对象
D.类与对象的关系和数据类型与变量的关系相似
()的功能是对象进行初始化。
A.析构函数B.数据成员C.构造函数D.静态成员函数
关于友元的描述中,()是错误的。
A.友元函数是成员函数,它被说明在类体内
B.友元函数可直接访问类中的私有成员
C.友元函数破坏封装性,使用时尽量少用
D.友元类中的所有成员函数都是友元函数
为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为()。
A.publicB.protectedC.privateD.static
下面对静态数据成员的描述中,正确的是()。
A.静态数据成员是类的所有对象共享的数据
B.类的每一个对象都有自己的静态数据成员
C.类的不同对象有不同的静态数据成员值
D.静态数据成员不能通过类的对象调用
下列表达方式正确的是()。
A.classP{B.classP{
public:
public:
intx=15;intx;
voidshow(){cout<};}
C.classP{D.classP{
intf;public:
};inta;
f=25;voidSeta(intx){a=x;}
以下叙述中不正确的是():
A.一个类的所有对象都有各自的数据成员,它们共享函数成员;
B.在一个类中可以声明另一个类的对象作为它的数据成员;
C.类与对象的关系和数据类型与变量的关系相似;
D.一个对象可以属于多个类。
对于一个功能不太复杂,并且要求加快执行速度,选用()合适
A.内置函数B.重载函数C.递归调用D.嵌套调用
Sample是一个类,执行下面语句后,调用Sample类的构造函数的次数是()Samplea[2],*p=newSample;
A.0B.1C.2D.3
已知函数FA调用FB,若要把这两个函数定义在同一个文件中,则()
A.FA必须定义在FB之前
B.FB必须定义在FA之前
C.若FA定义在FB之后,则FA的原型必须出现在FB的定义之前
D.若FB定义在FA之后,则FB的原型必须出现在FA的定义之前
下列有关运算符函数的描述中,错误的是()
A.运算符函数的名称总是以operator为前缀
B.运算符函数的参数可以是对象
C.运算符函数只能定义为类的成员函数
D.在表达式中使用重载的运算符相当于调用运算符重载函数
下面描述中,正确的是()。
A.virtual可以用来声明虚函数
B.含有纯虚函数的类是不可以用来创建对象的,因为它是虚基类
C.既使基类的构造函数没有参数,派生类也必须建立构造函数
D.静态数据成员可以通过成员初始化列表来初始化
下列对基类和派生类关系的描述中,错误的是()。
A.派生类是基类的具体化B.派生类是基类的子集
C.派生类是基类定义的延续D.基类是派生类的抽象
C++语言对C语言做了很多改进,C++语言相对于C语言的最根本的变化是()。
A.增加了一些新的运算符B.允许函数重载,并允许设置缺省参数
C.规定函数说明符必须用原型D.引进了类和对象的概念
下列表示引用的方法中,()是正确的。
已知:
intk=1000;
A.int&x=k;B.char&y;C.int&z=1000;D.float&t=&k;下面对于友元函数描述正确的是()。
A.友元函数的实现必须在类的内部定义B.友元函数是类的成员函数
C.友元函数破坏了类的封装性和隐藏性D.友元函数不能访问类的私有成员假定AB为一个类,则执行“ABa(4),b[3],*p[2];”语句时,自动调用该类构造函数的次数为()。
A.3B.4C.6D.9
以下不属于构造函数特征的是()
A.构造函数名与类名相同B.构造函数可以重载
C.构造函数可以设置默认参数D.构造函数必须指定函数类型
下列定义中,X是一个类,()是定义指向对象数组的指针p。
A.X*p[4]B.X(*p)[4]C.(X*)p[4]D.X*p[]
假定X为一个类,则该类的复制构造函数的声明语句为()。
A.MyClass(MyClassx)B.MyClass&(MyClassx)
C.MyClass(MyClass&x)D.MyClass(MyClass*x)
以下正确的说法是()。
A.实参和其对应的形参各占用独立的存储单元。
B.实参和其对应的形参共占用一个存储单元。
C.只有当实参和与其对应的形参同名时才共占用存储单元。
D.形参是虚拟的,不占用存储单元。
下列关于多态性的描述,错误的是()。
A.C++语言的多态性分为编译时的多态性和运行时的多态性
B.编译时的多态性可通过函数重载实现
C.运行时的多态性可通过模板实现
D.实现运行时多态性的机制称为动态绑定
对C++编译器区分重载函数无任何意义的信息是()
A.参数类型B.参数个数
C.返回值类型D..参数顺序
关于new运算符的下列描述中,()是错误的。
A.它可以用来动态创建对象和对象数组
B.使用它创建对象或对象数组,可以使用运算符DELETE删除
C.使用它创建对象时要调用构造函数
D.使用它调用对象数组时不许指定初始值
如果一个类至少有一个纯虚函数,那么就称该类为()。
A.抽象类B.派生类C.纯基类D.以上都不对有如下程序:
#include
usingnamespacestd;
classA{
public:
virtualvoidf(){cout<<1;}
voidg(){cout<<2;}};
classB:
publicA{
public:
virtualvoidf(){cout<<3;}
voidg(){cout<<4;}};
voidshow(A&a){a.f();a.g();}
intmain(){
Bb;show(b);return0;}
运行时的输出结果是()
A.12B.34C.14D.32
下列虚基类的声明中,正确的是()
A.classvirtualB:
publicAB.virtualclassB:
publicA
C.classB:
publicAvirtualD.classB:
virtualpublicA
派生类的对象对它的基类成员中()是可以访问的。
A.公有继承的公有成员B.公有继承的私有成员
C.公有继承的保护成员D.私有继承的公有成员
已知数组arr的定义如下:
intarr[5]={1,2,3,4,5};
下列语句中输出结果不是2的是()
A.cout<<*arr+1<C.cout<下列运算符中,()运算符在C++中不能重载。
A.?
:
B.[]C.newD.&&有如下程序:
#include
usingnamespacestd;
classA{
public:
virtualvoidf(){cout<<1;}
voidg(){cout<<2;}
};
classB:
publicA{
public:
virtualvoidf(){cout<<3;}
voidg(){cout<<4;}};
voidshow(A&a){a.f();a.g();}
intmain(){
Bb;
show(b);
return0;}
运行时的输出结果是()
A.12B.34C.14D.32
有如下程序段:
inti=4;intj=1;
intmain(){
inti=8,j=i;
cout<
}
运行时的输出结果是()
A.44B.41C.88D.81
下列情况中,不会调用拷贝构造函数的是()。
A.用一个对象去初始化同一类的另一个新对象时
B.将类的一个对象赋予该类的另一个对象时
C.函数的形参是类的对象,调用函数进行形参和实参结合时
D.函数的返回值是类的对象,函数执行返回调用时
下面对静态数据成员的描述中,正确的是()。
A.静态数据成员是类的所有对象共享的数据
B.类的每一个对象都有自己的静态数据成员
C.类的不同对象有不同的静态数据成员值
D.静态数据成员不能通过类的对象调用
下面的函数调用
fun(a+b,3,max(n-1)*b)
则fun的实参个数是()。
A.3B.4C.5D.6
已知函数fun的原型为
intfun(int,int,int)
下列重载函数原型中错误的是()
A.charfun(int,int);