《面向对象程序设计》习题Word文档下载推荐.docx
- 文档编号:18120542
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:30
- 大小:34.07KB
《面向对象程序设计》习题Word文档下载推荐.docx
《《面向对象程序设计》习题Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《《面向对象程序设计》习题Word文档下载推荐.docx(30页珍藏版)》请在冰豆网上搜索。
7、关于以下程序段中语法错误的正确描述是()。
#include<
iostream.h>
voidmain()
{
constchar*p1=”string1”;
char*constp2=”string”;
char*p3=”string3”;
p1[2]=’a’;
//①
p2[2]=’b’;
//②
p1=p3;
//③
p2=p3;
//④
A、①②③④均错误B、①和④错误
C、②和③错误D、③和④错误
8、由C++目标文件连接而成的可执行文件的缺省扩展名为()。
A、cppB、exeC、objD、lik
9、下述静态数据成员的特性中,()是错误的。
A、声明静态数据成员时前面要加修饰符static。
B、静态数据成员要在类体外进行初始化。
C、在程序中引用静态数据成员时,要在静态数据成员名前加<
类名>
和作用域运算符。
D、静态数据成员是本类中个别对象所共享的。
10、在下列的各类函数中,()不是类的成员函数。
A、构造函数 B、析构函数C、友元函数 D、拷贝构造函数
11、友元的作用之一是()。
A、提高程序的运行效率。
B、加强类的封装性。
C、实现数据的隐蔽性。
D、增加成员函数的种类。
12、关于静态成员,正确的说法是()。
A、静态成员函数可以直接访问该类中的非静态成员
B、非静态成员函数不能直接访问该类中的静态成员
C、静态数据成员同其它数据成员一样通过构造函数进行初始化
D、静态成员在任何对象创建之前就已经创建
13、下面对友元的错误描述是()。
A、友元函数不可访问对象的private成员
B、一个类的成员函数可以是另一个类的友元
C、友元类和友元函数均用关键字friend声明
D、友元函数可以访问对象的protected成员
14、关于C++中的继承机制,错误的说法是()。
A、虚拟继承限定基类只能通过一条路径派生出派生类;
B、解决多继承带来的二义性的方法之一是对成员名加以限定;
C、派生类的构造函数的成员初始化列表中,可包含基类中的子对象;
D、继承是一种组织类的基本手段。
15、下列对派生类的描述中,()是错的。
A、一个派生类可以作为另一个派生类的基类;
B、派生类至少有一个基类;
C、派生类的成员除了它自己的成员外,还包含了它的基类的成员;
D、派生类中继承的基类成员的访问权限到派生类保持不变;
16、派生类的构造函数的成员初始化列表中,不能包含()。
A、基类的构造函数;
B、派生类中子对象的初始化;
C、基类的子对象初始化;
D、派生类中一般数据成员的初始化;
17、下列对继承关系的描述中,()是正确的。
A、在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的;
B、在公有继承中,基类中只有公有成员对派生类的对象是可见的;
C、在私有继承中,基类中只有公有成员对派生类是可见的;
D、在私有继承中,基类中的保护成员对派生类的对象是可见的;
18、关于继承中出现的二义性的描述中,()是错误的。
A、一个派生类的两个基类中都有某个同名成员,在派生类中对这个成员的访问可能出现二义性;
B、解决二义性的最常用的方法是对成员名的限定法;
C、在单继承情况下,派生类中对基类成员的访问也会出现二义性;
D、一个派生类是从两个基类派生出来的,而这两个基类又有一个共同的基类,对该基类成员进行访问时,也可能出现二义性;
19、设置虚基类的目的是()。
A、简化程序;
B、消除二义性;
C、提高运行效率;
D、减少目标代码;
20、带有虚基类的多层派生类构造函数的成员初始化列表中都要列出虚基类的构造函数,这样将对虚基类的子对象初始化()。
A、与虚基类下面的派生类个数有关;
B、多次;
C、二次;
D、一次;
21、在创建派生类对象时,构造函数的执行顺序是()。
A、对象成员构造函数、基类构造函数、派生类本身的构造函数;
B、派生类本身的构造函数、基类构造函数、对象成员构造函数;
C、基类构造函数、派生类本身的构造函数、对象成员构造函数;
D、基类构造函数、对象成员构造函数、派生类本身的构造函数。
22、对于如下类的定义,下面语句组中出现语法错误的是()。
classX{
inta;
public:
X(intx=0){a=x;
};
classY:
intb;
Y(intx=0,inty=0):
X(x){b=x;
A、X*pa=newY(1,2);
B、Xa1=Y(1,3);
C、Yb1(2,3);
X&
a3=b1;
D、Xa4(10);
Yb2=a4;
23、下面是重载双目运算符+的普通函数原形,其中最符合+原来含义的是()。
A、Valueoperator+(Value,Value);
B、Valueoperator+(Value,int);
C、Value&
operator+(Value,Value*);
D、Value&
operator+(Value&
Value&
);
24、下列关于运算符重载的描述中,()是正确的。
A、运算符重载可以改变运算数的个数;
B、运算符重载可以改变优先级;
C、运算符重载可以改变结合性;
D、运算符重载不可以改变语法结构。
25、下列函数中,()不能重载。
A、一般的成员函数;
B、一般的非成员函数;
C、析构函数;
D、构造函数。
26、关于运行时多态的下列描述中,()是错误的。
A、运行时多态是以虚函数为基础的;
B、运行时多态是在运行时确定所调用的函数代码的;
C、用基类指针或引用所标识的派生类对象来操作虚函数才能实现运行时多态;
D、运行时多态是在编译时确定操作函数的。
27、关于基类和派生类的关系,()是错误的。
A、派生类对象属于基类;
B、可以用派生类指针指向派生类对象;
C、可以将基类对象赋值给派生类对象;
D、派生类对象指针可转换为基类指针。
28、基类A中有成员函数fn1()、fn2(),在派生类B中重载了成员函数fn1()(即重新定义了fn1()),但没有重载其成员函数fn2()。
如果在派生类B中调用基类A的成员函数fn1()(不是B中重载的数fn1())和fn2(),则正确的方式是()。
A、A:
:
fn1()和fn2();
B、fn1()和A:
fn2();
C、A:
fn1()和A:
D、fn1()和fn2();
29、下面对模板的声明,正确的是()。
A、template<
T>
B、template<
classT1,T2>
C、template<
classT1,classT2>
D、template<
T1,T2>
30、若有如下函数模板定义,则正确使用该函数模板的语句是()。
template<
classtype>
voidadd(typea,typeb,type&
c)
{c=a+b
;
}
A、floatx,y,z;
add(x,y,z)
B、intx,y,z;
add(x,y,&
z)
C、floatx,y
intz;
D、floatx,y
31、类模板的作用是可以将其实例化后得到一个具体的()。
A、类B、对象C、模板类D、模板函数
32、以下关于函数模板的论述中,正确的是()。
A、一旦定义了函数模板,就不能再定义同名的重载函数;
B、从同一个函数模板实例化后得到的多个模板函数属于函数重载;
C、函数模板中只有一种参数;
D、在定义函数模板时,template语句与函数模板定义语句之间可以有别的语句。
33、对于类模板,其类型形参可以作为()。
A、成员函数的形参类型B、成员函数的返回类型
C、数据成员的类型D、以上三种均可
34、已知:
p是一个指向类A数据成员m的指针,A1是类A的一个对象。
如果要给A1的m赋值为5,()是正确的。
A、A1.p=5;
B、A1->
p=5;
C、A1.*p=5;
D、*A1.p=5;
35、一个类的构造函数为“B(intax,intbx):
a(ax),b(bx){}”,执行“Bx(1,2),y(3,4);
x=y;
”语句序列后x.a的值为()。
A、1B、2C、3D、4
36、下列关于类的访问控制机制说法错误的是()。
A、静态数据成员通常都定义为公有类型。
B、一个对象的私有成员对于同类的另一个对象是可见的。
C、友元机制破坏了类的封装性。
D、基类的保护成员对派生类新定义的成员函数是可见的。
37、下面是四条顺序出现的声明语句,非法的初始化语句是()。
A、inti=–1;
38、下述静态数据成员的特性中,()是错误的。
A、声明静态数据成员时前面要加修饰符static。
B、静态数据成员要在类体外进行初始化。
C、在程序中引用静态数据成员时,要在静态数据成员名前加<
D、静态数据成员是一个类的个别对象所共享的。
39、若有语句int*p=newint[5];
int*pi;
则以下语句中,执行时会造成delete[]p语句的执行出错的是()。
A、(*p)++;
B、p++;
C、pi=p;
D、pi=p+3;
40、对于下面的两条语句,正确的描述是()。
MyObjecta
(2),b(a),c;
c=b=a;
A、拷贝构造函数执行了1次;
B、赋值运算符重载函数执行了3次;
C、拷贝构造函数函数执行了3次;
D、赋值运算符重载函数执行了1次;
41、下列不是C++基本数据类型的是()。
A、intB、string
C、charD、void
42、不可以成为类的数据成员的是()。
A、自身类的对象B、另一个类的对象
C、自身类的指针或引用D、其他基本数据类型
43、下列对继承关系的描述中,正确的是()。
A、在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的;
B、在公有继承中,基类中只有公有成员对派生类的对象是可见的;
C、在私有继承中,基类中只有公有成员对派生类是可见的;
D、在私有继承中,基类中的保护成员对派生类的对象是可见的;
44、下列说法错误的是()。
A、在类中,成员的默认访问特性是私有的;
B、类封装了数据和操作;
C、类实质上是一种数据类型;
45、下列说法错误的是()。
A、在类中不能对所定义的数据成员进行初始化;
B、类的公有成员函数是类与外界的接口;
C、同一个类的两个对象占用相同的内存空间;
46、下列关于私有继承的说法中正确的是()。
A、基类成员对派生类新定义的成员函数是不可见的;
B、基类成员对派生类新定义的成员函数是可见的;
C、只有基类成员中的公有成员对派生类新定义的成员函数是可见的;
D、基类成员中的保护成员对派生类新定义的成员函数是可见的。
47、下列程序段不会发生二义性的是()。
A、intfun(doublep){...;
}B、intfun(floatp){...;
48、下列关于虚基类的说法错误的是()。
A、有引入虚基类的目的是解决二义性的问题;
B、因为虚基类可被多个派生类继承,因此可以有多个副本以适应不同的派生类;
C、若某个类被说明为虚基类,则被重复继承的该类成员在派生类对象中只有一个副本;
D、在派生类对象创建时,要保证虚基类的构造函数只被调用一次。
49、函数重载与函数模板的说法错误的是()。
A、当函数的函数体不同时,可以把函数设计为重载函数;
B、当函数体相同,仅仅操作的数据类型不同时,可把函数设计为模板;
C、重载函数和函数模板都是抽象的,都需实例化;
D、函数模板有待于实例化为模板函数,重载函数可以直接引用。
50、下列对引用的陈述中错误的是()。
A、每一个引用都是其所引用对象的别名,因此必须初始化;
B、形式上针对引用的操作实际上作用于它所引用的对象;
C、一旦定义了引用,一切针对其所引用对象的操作只能通过该引用间接进行;
D、不需要单独为引用分配存储空间。
51、以下正确的函数原型语句是()。
A、doublefun(intx,inty)
B、doublefun(intx;
inty)
C、doublefun(int,int);
D、doublefun(intx,y);
52、下面有关重载函数的说法中正确的是()。
A、重载函数必须具有不同的返回值类型
B、重载函数形参个数必须不同
C、重载函数必须有不同的形参列表
D、重载函数名可以不同
53、函数重载是指()。
A、两个或两个以上的函数取相同的函数名,但形参的个数或类型不同
B、两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同
C、两个以上的函数名字不同,但形参的个数或类型相同
D、两个以上的函数取相同的函数名,并且函数的返回类型相同
54、采用重载函数的目的是()。
A、实现共享B、减少空间
C、提高速度
D、使用方便,提高可读性
55、以下关于函数模板叙述正确的是()。
A、函数模板也是一个具体类型的函数
B、函数模板的类型参数与函数的参数是同一个概念
C、通过使用不同的类型参数,函数模板可以生成不同类型的函数定义
D、用函数模板定义的函数没有类型
56、以下正确的描述是(
)。
A、不允许设置参数的默认值
B、设置参数的默认值只能在定义函数时设置
C、设置参数的默认值时,应该设置右边的参数
D、设置参数的默认值时,应该全部参数都设置
57、()是给变量取一个别名,它引入了变量的同义词。
A、指针B、引用C、枚举D、结构
58、假定变量x定义为“intx=5;
”,要使rx成为x的引用(别名),rx应定义为(
A、intrx=x;
B、intrx=&
x;
C、int*rx=&
D、int&
rx=x;
59、下列对引用的陈述中不正确的是(
A、每一个引用都是其所引用对象的别名,因此必须初始化
B、形式上针对引用的操作实际上作用于它所引用的对象
C、一旦定义了引用,一切针对其所引用对象的操作只能通过该引用间接进行
D、不需要单独为引用分配存储空间
60、下列()的调用方式是引用调用。
A、形参和实参都是变量
B、形参是指针,实参是地址值
C、形参是引用,实参是变量
D、形参是变量,实参是地址值
61、假定AA为一个类,a为该类公有的数据成员,x为该类的一个对象,则访问x对象中数据成员a的格式为(
A、x(a)
B、x[a]
C、x->
a
D、x.a
62、假定AA为一个类,a()为该类公有的函数成员,x为该类的一个对象,则访问x对象中函数成员a()的格式为(
)。
A、x.a
B、x.a()
D、x->
a()
63、假定AA为一个类,a为该类公有的数据成员,px为指向该类对象的一个指针,则访问px所指对象中数据成员a的格式为(
A、px(a)
B、px[a]
C、px->
D、px.a
64、假定AA为一个类,a为该类私有的数据成员,GetValue()为该类公有函数成员,它返回a的值,x为该类的一个对象,则访问x对象中数据成员a的格式为(
A、x.a
C、x->
GetValue()
D、x.GetValue()
65、若需要把一个类外定义的成员函数指明为内联函数,则必须把关键字(
)放在函数原型或函数头的前面。
A、in
B、inline
C、inLine
D、InLiner
66、类的析构函数是一个对象被(
)时自动调用的。
A、建立
B、撤消
C、赋值
D、引用
67、能够释放对象所占资源的是()。
A、析构函数
B、数据成员
C、构造函数
D、静态成员函数
68、类的析构函数的作用是().。
A、一般成员函数B、类的初始化
C、对象的初始化D、对象释放后的操作
69、对于一个类的析构函数,其函数名与类名(
A、完全相同
B、完全不同
C、只相差一个字符
D、无关系
70、一个类的析构函数通常被定义为该类的(
)成员。
A、私有
B、保护
C、公用
D、友元
71、定义析构函数时,应该注意()。
A、其名与类名完全相同
B、返回类型是void类型
C、无形参,也不可重载
D、函数体中必须有delete语句
77、类的析构函数可以带有(
)个参数。
A、0
B、1
C、2
D、任意
73、类的析构函数是在()调用的。
A、类创建时B、创建对象时
C、对象生命期结束时D、不自动调用
74、当一个类对象离开它的作用域时,系统自动调用该类的(
A、无参构造函数
B、带参构造函数
C、拷贝构造函数
D、析构函数
75、假定一个类对象数组为A[n],当离开它定义的作用域时,系统自动调用该类析构函数的次数为(
C、n
D、n-1
76、假定AB为一个类,则执行“ABa[10];
”语句时调用该类无参构造函数的次数为(
C、9
D、10
77、假定AA是一个类,abc是该类的一个成员函数,则参数表中隐含的第一个参数的类型为(
A、int
B、char
C、AA
D、AA*
78、假定AA是一个类,abc是该类的一个成员函数,则参数表中隐含的第一个参数为(
A、abc
B、*this
C、this
D、this&
79、假定AB为一个类,则执行“AB*px=newAB[n];
”语句时将(
A、动态分配一个数组
B、动态分配一个对象
C、静态分配一个数组
D、静态分配一个对象
80、设px是指向一个类对象的指针变量,则执行“deletepx;
”语句时,将自动调用该类的(
)
A、无参构造函数
C、析构函数
D、复制构造函数
81、虚函数的定义是在基类中进行的,定义时需要冠以关键字()。
A、static
B、friend
C、virtual
D、public
82、C++编译系统确定调用是具体对象的过程称为关联。
C++有()关联。
A、1种B、2种C、3种D、4种
83、调用一个成员函数时,使用动态关联的情况是()。
A、通过对象调用一虚函数
B、通过指针或引用调用一虚函数
C、通过对象调用一静态函数
D、通过指针或引用调用一静态函数
84、C++类体系中,不能被派生继承的有()。
A、转换函数B、构造函数
C、虚函数D、静态成员函数
85、C++语言建立类族是通过()。
A、类的嵌套B、类的继承
C、虚函数D、抽象类
86、在下面的4个关键字中,()是用来说明虚函数的。
A、virtualB、public
C、protectedD、private
87、实现运行时的多态性要使用()。
A、重载函数B、析构函数
C、
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向对象程序设计 面向 对象 程序设计 习题