面向对象C++填空题Word格式.docx
《面向对象C++填空题Word格式.docx》由会员分享,可在线阅读,更多相关《面向对象C++填空题Word格式.docx(20页珍藏版)》请在冰豆网上搜索。
指针变量>
new<
数据类型>
;
其中,<
可以是基本数据类型,也可以是由基本类型派生出来的类型;
取得
分配到的内存首地址。
new有3种使用形式。
(1)给单个对象申请分配内存
int*ip;
ip=newint;
//ip指向1个未初始化的int型对象
(2)给单个对象申请分配内存的同时初始化该对象
ip=newint(68);
//ip指向1个表示为68的int型对象
(3)同时给多个对象申请分配内存
ip=newint[5];
//ip指向5个未初始化的int型对象的首地址
for(inti=0;
i<
5;
i++)ip[i]=5*i+1;
//给ip指向的5个对象赋值
用new申请分配内存时,不一定能申请成功。
若申请失败,则返回NULL,即空指针。
因此,在程
序中可以通过判断new的返回值是否为0来获知系统中是否有足够的空间供用户使用。
20.基类的公有成员在派生类中的访问权限由___决定。
访问控制方式或继承方式
21.不同对象可以调用相同名称的函数,但执行完全不同行为的现象称为___。
多态性
[解析]多态性的概念。
虚函数是实现多态的基础,运行过程中的多态需要同时满足3个条件
:
(1)类之间应满足子类型关系。
(2)必须要有声明的虚函数。
(3)调用虚函数操作的是指向对象
的指针或者对象引用;
或者是由成员函数调用虚函数(如果是在构造函数或析构函数中调用虚函
数,则采用静态联编)。
22.this指针始终指向调用成员函数的___。
对象
this指针是隐藏的指针,它指向调用函数的对象。
23.类模板用来表达具有___的模板类对象集。
相同处理方法
[解析]模板特点是不同的数据具有相同的处理方法的抽象。
24.C++程序的源文件扩展名为___。
cpp
[解析]源程序*.cpp,目标文件为*.obj,可执行程序*.exe。
25.在#include命令中所包含的头文件,可以是系统定义的头文件,也可以是___的头文件。
自定义
[解析]#include装入文件有两种方式<
>
和“”,一是系统的,一是自定义文件。
26.语句序列
ifstreaminfile;
infile.open(“data.dat”);
的功能可用一个语句实现,这个语句是___。
ifstreaminfile(“data.dat”);
[解析]voidifstream:
open(constchar*fname,intmode=ios:
in,int
access=filebuf:
openprot);
ifstream:
ifstream(constchar*fname,intmode=ios:
in,intaccess=filebuf:
其中,第一个参数是用来传递文件名的;
第二个参数mode的值决定文件将如何被打开;
第三个参
数access的值决定文件的访问方式,一般取缺省值filebuf:
openprot,表示是普通文件。
mode的取值如下:
(1)ios:
in:
打开一个文件进行读操作,而且该文件必须已经存在
;
(2)ios:
nocreate:
不建立新的文件。
当文件不存在时,导致open()失败
(3)ios:
noreplace:
不修改原来已经存在的文件。
若文件已经存在,导致open()失败
(4)ios:
binary:
文件以二进制方式打开,缺省时为文本文件。
27.如果要把类B的成员函数voidfun()说明为类A的友元函数,则应在类A中加入语句___。
friendvoidB:
fun();
[解析]声明成员函数作为另外一个类的友元函数时,使用类作用域运算符:
28.单目运算符作为类成员函数重载时,形参个数为___个。
[解析]单目运算符使用成员函数重载可以不用形参,双目运算符使用一个参数。
29.执行下列程序
doublea=3.1415926,b=3.14;
cout<
setprecision(5)<
a<
"
"
b<
endl;
程序的输出结果是___。
3.1416,3.14
[解析]题目设置精度即有效数字都是5,a四舍五入是3.1416,b是3.14。
30.重载的运算符保持其原有的___、优先级和结合性不变。
操作数
[解析]运算符重载时要遵循以下规则:
(1)除了类属关系运算符“.”、成员指针运算符“.*”、作用域运算符“:
”、sizeof运算符
和三目运算符“?
”以外,C++中的所有运算符都可以重载。
(2)重载运算符限制在C++语言中已有的运算符范围内的允许重载的运算符之中,不能创建新的
运算符。
(3)重载之后的运算符不能改变运算符的优先级和结合性,也不能改变运算符操作数的个数及
语法结构。
31.编译时的多态性通过___函数实现。
重载
[解析]编译多态性,实现的方法主要通过函数的重载或运算符的重载。
32.假设类X的对象x是类Y的成员对象,则“YObj”语句执行时,先调用类___的构造函数。
X
[解析]派生类中的构造函数的执行顺序,先基类后派生类。
33.下列程序段的输出结果是___。
cout.setf(ios:
showpos);
509.3<
+509.3
[解析]输入、输出格式ios:
showpos用于输出数据的符号位。
34.C++中ostream的直接基类___。
ios
[解析]istream和ostream的直接基类是ios。
35.C++中有两种继承:
单继承和___。
多重继承
[解析]单继承和多重继承,多重继承即有多个基类。
36.若函数的定义处于调用它的函数之前,则在程序开始可以省去该函数的___语句。
声明
[解析]函数使用有两部分:
声明和定义。
定义在前,可以无声明;
但函数定义在后,调用在前
的话,需要先声明函数的原型。
37.将指向对象的引用作为函数的形参,形参是对象的引用,实参是___。
对象名
[解析]实参与形参类型要一致,形参是对象的引用,实参应该是对象名。
38.控制格式输入输出的操作中,函数___是设置域宽的。
要求给出函数名和参数类型)。
setw(int)
[解析]setw(intn):
用来设置n输出宽度。
39.派生类的成员一般分为两部分,一部分是___,另一部分是自己定义的新成员。
从基类继承的成员
[解析]派生类成员一个来自继承基类成员,一个来自本身增加的成员。
40.执行下列代码
inti=230;
cout<
i="
hex<
程序的输出结果为___。
i=e6
[解析]流类库中使用格式符,输出十六进制数据。
41.使用new为int数组动态分配10个存储空间是___。
newint[10];
[解析]newdelete动态开辟空间和删除空间。
newint[10],注意不要写成new
int(10),使用小括号只能开辟一个空间,使用10来初始化该值。
42.面向对象的四个基本特性是多态性、继承性、和封装性___。
抽象
[解析]考察面向对象的四个特征。
程序由一组抽象的对象组成,一组对象的共同特征抽象出类
的概念,类是对象的抽象,对象是类的实例。
封装即将数据和操作紧密结合提供访问的接口,外
部通过接口实现访问数据,提供安全性。
继承继承解决了类的扩展性。
多态性不同对象调用相同
的函数名,但调用不同的函数,实现不同的功能,解决了接口统一的问题。
43.定义虚函数所用的关键字是___。
virtual
[解析]在成员函数前加virtual修饰的函数就是虚函数。
但不是所有成员函数都可以定义为虚
函数的。
比如构造函数,不能定义虚函数。
44.执行下列代码
“oct:
”<
oct<
34;
Oct:
42
[解析]oct表示八进制,hex表示十六进制,但它们只能输出整型的数据。
45.在C++中要创建一个文件输入流对象fin,同时该对象打开文件“Test.txt”用于输入,则
正确的声明语句是___。
ifstreamfin(“Test.txt”);
[解析]文件操作中ifstream用于文件的输入,可以调用它的构造函数与要打开的文件进行关联
46.如果一个派生类只有一个唯一的基类,则这样的继承关系称为___。
单继承
[解析]根据派生类所拥有的基类数目不同,可以分为单继承和多重继承。
一个类只有一个直接基
类时,称为单继承;
而一个类同时有多个直接基类时,则称为多重继承。
基类与派生类之间的关系如下:
(1)基类是对派生类的抽象,派生类是对基类的具体化,是基类定义的延续。
(2)派生类是基类的组合。
多重继承可以看作是多个单继承的简单组合。
(3)公有派生类的对象可以作为基类的对象处理。
47.复制构造函数使用___作为形式参数。
对象的引用
[解析]复制构造函数使用对象的引用来初始化一个新对象,避免临时产生对象。
48.通过C++语言中的___机制,可以从现存类中构建其子类。
继承
[解析]继承概念,从现有的类生成新类,原有的类称为父类或基类,新类又称子类或派生类或
衍生类,它是对基类的扩充。
49.在下面的类定义中,私有成员有___。
classLocation
{intX,Y;
protected:
intzeroX,zerxY;
intSetZero(intzeroX,intzeroY);
private:
intlength,height;
public:
voidinit(intinitX,intinitY);
intGetX();
intGetY();
};
X,Y,length,height
50.C++中语句constchar*constp=“hello”;
所定义的指针p和它所指的内容都不能被
___。
修改
[解析]使用const修改的内容不能修改,这里同时修饰地址和值,表示地址和值都不变。
52.C++是通过引用运算符___来定义一个引用的。
&
[解析]引用是C不具有使用方法,它表示变量的别名,在函数中使用很频繁,因为调用形式同
传值调用,但修改形参实参也会相应改变的特征。
53.如果要把PI声明为值为3.14159类型为双精度实数的符号常量,该声明语句是___。
)constdoublePI(3.14159);
或者constdoublePI=3.14159;
[解析]使用const声明符号常量,常量和常量值可以用括号也可以赋值号。
54.在C++四个流对象中,___用于标准屏幕输出。
cout
[解析]cin、cout、cerr和clog中cin用于输入,cout用于输出,cerr、clog错误处理。
55.执行下列代码
inta=32;
doublec=32;
hex);
hex:
a="
c="
c<
cout.unsetf(ios:
hex:
a=20,c=32
[解析]用十六进制只能输出整型数据,而不能将其它类型数据转换成十六进制的数据输出。
所
以double类型不变仍然是32(double类型)。
56.执行下列程序
inta=21,j=16;
j<
1516
[解析]a=21以十六进制输出,j=16以十进制输出。
57.在单继承和多重继承方式中,面向对象的程序设计应尽量使用___继承。
单
[解析]多重继承是单继承的扩展,且多重继承易产生二义性等问题。
58.在用class定义一个类时,数据成员和成员函数的默认访问权限是___。
private
[解析]定义类时的成员默认为私有,而结构体则是公有。
59.所有模板都是以___关键字和一个形参表开头的。
template
[解析]类模板,函数模板都要使用template这一关键字。
60.在C++语言中,访问一个对象的成员所用的成员运算符是___。
.
[解析]成员运算符“.”,如果是指针可以使用“->
”。
61.开发一个C++语言程序的步骤通常包括编辑、___、连接、运行和调试。
编译
[解析]vc开发过程,要经过编辑、编译、连接和运行四个步骤,与其它高级语言相同。
62.执行下列代码
stringstr("
HelloC++"
);
str.substr(5,3);
C++
[解析]substr取子字符串,第1个参数表示要截取子串在字符串中的位置,第2个表示取多少个
字符。
63.定义___函数时,应在参数个数或参数类型上有所不同。
[解析]重载函数要求同名函数具有相同的功能,而只能是函数类型、参数个数或参数顺序不同
系统将根据同名函数的这些不同之处来选择其对应的实现。
64.设A为test类的对象且赋有初值,则语句testB(A);
表示。
将对象A复制给对象B。
分析:
执行testB(A);
语句相当于调用了默认复制构造函数,将A对象的属性复制给B对象。
65.利用“对象名.成员变量”形式访问的对象成员仅限于被声明为
(1)的成员;
若要访问其他成员变量,需要通过
(2)函数或(3)函数。
(1)public
(2)成员函数(3)友元函数
类体内的数据成员可声明为公有的、私有的和保护的,公有的数据成员可利用“对象名.成员变量”形式来进行访问;
私有的数据成员能被类中的其他成员函数或友元函数所调用;
保护的数据成员可以在类体中使用,也可以在派生类中使用,但不能在其他类外通过对象使用。
66.纯虚函数是一种特别的虚函数,它没有函数的函数体部分,也没有为函数的功能提供实现的代码,它的实现版本必须由派生类给出,因此纯虚函数不能是友元函数。
拥有纯虚函数的类就是抽象类类,这种类不能实例化。
如果纯虚函数没有被重载,则派生类将继承此纯虚函数,即该派生类也是抽象。
67.对一个类中的数据成员的初始化,可以通过构造函数来实现,也可以通过该类的成员函数来实现。
68.类成员的三种访问控制属性是:
公有(public)、保护(protected)、私有(private)。
69.在类内部定义的公有(public)数据可以在类外进行存取,但保护(protected)数据和私有(private)数据不能在类外直接存取。
70.在OOP中,当类的继承方式为公有继承时,基类的公有成员和保护成员的访问属性在派生类中不变,基类的私有成员不可访问。
71.在一个类中可以定义多个构造函数,1个析构函数。
72.在删除一个动态对象时,将自动调用该动态对象所属类的析构函数。
73.为了在对象生存期结束时释放其指针成员所指向的动态存储空间,通常需要为该类定义析构函数。
74.当建立一个新对象时,程序自动调用构造函数。
75.类的私有成员只能被它的成员函数和友元函数访问。
76.假定用户没有给一个名为AB的类定义析构函数,则系统自动给出的缺省析构函数定义为~AB(){}。
77.一个抽象类的派生类可以实例化的必要条件是实现了所有的纯虚函数。
78.在C++中,虚函数帮助实现了类的多态性。
79.通过C++语言中类的继承(派生)机制,可以扩充和完善已有类以适应新的需求。
80.C++类族中,不能被派生类继承的有构造函数、析构函数。
81.定义重载函数时,应保证参数个数或参数类型有所不同。
82.在OOP中多态是指同样的消息被不同对象接收时可产生不同的行为;
它通过重载虚函数等技术来实现。
83.定义模板的关键字是template。
84.模板定义中标识类型的参数必须用关键字class(或typename)修饰。
85.类模板可以使用两种形式的参数,分别是:
类型参数和普通参数。
86.函数模板既可以与函数模板重载,也可以与普通函数重载。
87.C++的I/O系统通过流的机制实现文件和控制台的输入输出操作。
88.cin是输入流istream的一个对象,处理标准输入;
cout是输出流ostream的一个对象,处理标准输出。
89.设要把一个文件输出流对象myFile与文件“f:
\myText.txt”相关联,所用的C++语句是:
__ifstreammyFile(“f:
\\myText.txt”);
_。
90.设在程序中使用如下语句申请了一个对象数组:
Point*ptr=newPoint[2];
当要释放ptr指向的动态数组对象时,所使用的语句是__delete[]ptr;
91.在保护派生中,基类权限为Private的成员在派生类中___不可访问_____。
92.类A有如下成员函数:
intA:
fun(doublex){return(int)x/2;
}
fun(intx){returnx*2;
设a为类A的对象,在主函数中执行语句ints=a.fun(6.0)+a.fun
(2)后的s值为_7__。
93.类A有如下成员函数:
设a为类A的对象,在主函数中执行语句ints=a.fun(6)+a.fun(2.0)后的s值为__13__。
94.完成下面类中的成员函数的定义。
classpoint{
intm,n;
public:
point(int,int);
point(point&
);
};
point:
point(inta,intb){//此构造函数分别将两个参数值赋给数据成员m和n。
m=a;
___n=b;
point(___point&
t___){//此构造函数通过对象t赋值给两个数据成员m和n。
m=t.m;
n=t.n;
95.下面是一个输入半径,输出其面积和周长的C++程序,在下划线处填上正确的语句。
#include<
iostream>
usingnamespacestd;
constfloatpi=3.14159;
//定义pi为浮点型常量
voidmain(){
doubler,l,s;
″r=″;
___cin>
r;
______//输入圆半径值给变量r
l=2.0*pi*r;
//计算圆周长值给变量l
s=pi*r*r;
//计算圆面积值给变量s
″\nThelongis:
″<
l<
endl;
″Theareais:
s<
96.在下划线处填上缺少的部分。
fstream>
classcomplex{
intreal;
intimag;
complex(intr=0,inti=0){
real=r;
imag=i;
complexoperator+(__complex&
a___,complex&
b){
intr=a.real+b.real;
inti=a.imag+b.imag;
return__complex(r,i);
//将结果以对象方式返回
complexx(1,2),y(3,4),z;
z=x+y;
z.real<
″+″<
z.imag<
″i″<
97.程序的输出结果如下:
1,9
50,30
请根据输出数据在下面程序中的下划线处填写正确的语句。
源程序如下:
classbase{
private:
intm;
base(){};
base(inta):
m(a){}
intget(){returnm;
voidset(inta){m=a;
voidmai