c++面向对象复习题答案版
- 格式:doc
- 大小:183.50 KB
- 文档页数:22
一、填空题1.C++中有两种数据类型:( char)和( int long )可以使用signed修饰符。
在C++中,用数组、指针、和( 引用)作为函数参数,能够将参数值带回。
2.为了降低函数调用的时间开销,建议将小的调用频繁的函数定义为(内联函数),方法是在函数类型前加上(inline)关键字。
3.面向对象的程序设计有四大特征,它们是抽象、封装、( 继承)、( 多态)。
4.拷贝构造函数是在用一个对象初始化另一个对象时被调用,系统缺省的拷贝构造函数的工作方法是( 把对象的每个数据成员的值都复制到新建立的对象中)。
5.用new申请某一个类的动态对象数组时,在该类中必须能够匹配到(该类的)构造函数,否则应用程序会产生一个编译错误。
6.静态数据成员必须在类外进行初始化,且静态数据成员的一个拷贝被类的所有对象( 共享)。
7.在C++中,定义重载函数时,应至少使重载函数的参数个数或参数类型( 不同)。
8.在C++中,虽然友元提供了类之间数据进行访问的一种方式,但它破坏了面向对象程序设计的( 封装)特性。
9.预编译指令由三种,它们是:文件包含、( 宏定义)和( 条件编译)。
10.静态的成员函数没有隐含的( this),所以,它们只能直接访问类的静态的数据成员。
11.在C++中,函数的参数有两种传递方式,它们是值传递和( 地址)。
12.当非静态成员函数被调用时,该成员函数的( this)指向调用它的对象。
13.拷贝构造函数使用( 引用)作为参数初始化创建中的对象。
14.在公有继承的情况下,基类数据成员在派生类中的访问权限( 不变)。
15.在C++中,构造派生类对象时,总是先从( 基类)的初始化开始的。
16.当需要统计程序中某个类创建对象的个数时,需要给该类定义(静态数据)成员。
17.在多个类之间有重复继承时,为避免被重复继承的基类数据成员在内存中有多个拷贝,应将该基类定义为(虚基类)。
18.在C++类中,有一种不能定义对象的类,这样的类只能被继承,称之为( 抽象类),定义该类至少具有一个( 纯虚函数)。
19.在C++中构造一个对象时,其数据成员在构造函数中初始化。
对于内嵌的对象、( 常量)、( 引用)数据成员需要在构造函数的成员初始化列表中初始化。
20.在类的定义中,说明为protected的数据成员称为保护成员。
保护数据成员具有双重作用:对于其派生类而言,( 可以访问);而对于其外部的程序而言,( 不可以访问)。
21.控制格式输出的操纵符中,(setprecision)是设置数据精度的,(hex)是设置十六进制的。
22.如果s是int型变量,且s=6,则下面s%2+(s+1)%2表达式的值为__0_ _。
23.已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch=’a’+4’的值为_e___。
24.数组与函数参数联系密切,当用数组元素作函数参数时,这是属于值传递;当数组名作为参数时,这是属于地址传递,对形参的改变可影响到实参。
25.利用“对象名.成员变量”形式访问的对象成员仅限于被声明为公有的成员;若要访问其他成员变量,需要通过公有函数或友元函数函数。
26.一个__类____和__对象___的关系,正如基本数据类型与该类型的变量一个。
27.类成员的默认访问方式是_私有的_____.28.一个类有_多个____个构造函数,有_一个____析构函数。
29.类的__静态___成员函数不能对类中的非静态成员进行默认访问。
30.如果说明类B是类A的友元类,则类B的所有成员函数都是类A的_友元函数 _____。
31.利用成员函数对二元运算符重载,其左操作数为对象,右操作数为实际参数。
32.类有两种用法:一种是类的实例化,即生成类的__模板类____ ;另一种是通过__基类_____派生出新的类。
33.运算函数中的关键字是_ _operator ____,它和运算符一起组成该运算符函数的函数名。
34.如果一个类中有一个或多个纯虚函数,则这个类称为_ _抽象类____。
35.文件的打开是通过使用类_ _ _对象_____的成员函数来实现的。
36.设所有变量均为整型,则表达式(e=2,f=5,e++,f++,e+f)的值为_9___。
37.已知c的ASCII码为十进制数99,设k为字符型变量,则表达式k=‘c’+1的值为___d_____。
38.函数的形参在未被调用之前不被分配空间,函数的形参的类型要和实参的相同。
39.类的成员分为数据成员和_ _ _成员函数____。
40.类完成了面向对象程序设计的_抽象____特性。
41.构造函数是_对象_____被创建时自动执行,对象消失时自动执行的成员函数称为__析构_____对象43.在继承机制下,当对象消亡时,编译系统先执行派生类的析构函数,然后才执行派生类中子对象类的析构函数,最后执行基类的析构函数。
44.类的__静态_____数据成员是类所有对象共享的成员。
45.友元函数__不是____类的成员函数。
(是/不是)46.如果类A继承了类B,则类A称为__派生类_____,类B称为__基类_____。
47.运算符重载后,原运算符的优先级和结合特性__不会___改变。
(会/不会)48._纯虚函数_____是一个在基类中说明的虚函数,但未给出具体的实现,要求在其派生类实现。
49.文件的关闭是通过通过使用类________的成员函数________来实现的。
(去掉)二、选择题1.面向对象的(B)是一种信息隐蔽技术,目的在于将对象的使用者与设计者分开。
不允许使用者直接存取对象的属性,只能通过有限的接口与对象发生联系。
A.多态性B.封装性C.继承性D.重用性2.C++的合法注释是(B)。
A./*This is a C program/* B.// This is a C programC.“This is a C program” D./*This is a C program//3.关于C++和C语言的描述中,(C)是错误的?A.C是C++的一个子集B.C程序在C++环境可以运行C.C++程序在C环境可以运行D.C++是面向对象的而C是面向过程的4.运算符+、<=、=、% 中,优先级最低的运算符是(C)。
A. +B.<=C.=D.%5.已知a=4,b=6,c=8,d=9,则“(a++,b>a++&&c>d)?++d:a<b”值为(D)。
A.9 B.6 C.8 D.06.对while、do…while循环结构,下面说法正确的是(B)。
A.只是表达形式不同B.do…while结构中的语句至少执行一次C.while结构中的语句至少执行一次D.条件成立时,它们有可能一次也不执行7.对中断语句的说法下面不正确的是( B )。
A.用户可以指定中断的位置B.用户可以指定转移的位置C.break语句可以跳出本循环D.continue语句可以结束本次循环8.以下正确的说法是(D)。
A.用户若需要调用标准函数,调用前必须重新定义B.用户可以直接调用所有标准库函数C.用户可以定义和标准库函数重名的函数,但是在使用时调用的是系统库函数D.用户可以通过文件包含命令将系统库函数包含到用户源文件中,然后调用系统库函数9.下列哪个不是重载函数在调用时选择的依据(D)。
A.参数类型B.参数个数C.函数类型D.函数名10.对数组名作函数的参数,下面描述正确的是(B)。
A.数组名作函数的参数,调用时将实参数组复制给形参数组B.数组名作函数的参数,主调函数和被调函数共用一段存储单元C.数组名作参数时,形参定义的数组长度不能省略D.数组名作参数,不能改变主调函数中的数据11.如果x是整型变量,则合法的形式是( D)。
A.&(x+5) B.*x C.&*x D.*&x12.在定义一个共用体变量时,系统为其分配存储空间的原则是(B)。
A.按所有成员需要的存储空间总和分配。
B.按成员中占存储空间最大者分配。
C.按成员占存储空间最小者分配。
D.按第一个成员所需的存储空间分配。
13.下面(B)项是对构造函数和析构函数的正确定义。
A.void X::X(), void X::~X()B.X::X(参数), X::~X()C.X::X(参数), X::~X(参数)D.void X::X(参数), void X::~X(参数)14.拷贝构造函数具有的下列特点中,(D)是错误的。
A.如果一个类中没有定义拷贝构造函数时,系统将自动生成一个默认的B.拷贝构造函数只有一个参数,并且是该类对象的引用C.拷贝构造函数是一种成员函数D.拷贝构造函数的名字不能用类名15.类的析构函数的作用是(D)。
A.一般成员函数B.类的初始化C.对象初始化D.删除对象16.下列对派生类的描述中,( D )是错误的。
A.一个派生类可以作为另一个派生类的基类B.派生类至少有一个基类C.派生类的成员除了它自己的成员外,还包含了它的基类成员D.派生类中继承的基类成员的访问权限到派生类保持不变17.继承具有(B, C),即当基类本身也是某一个类派生类时,底层的派生类也会自动继承间接基类的成员。
A规律性 B.传递性 C.重复性 D.多样性18.C++类体系中,能被派生类继承的是(A,B,C)。
A.构造函数 B.虚函数 C.析构函数 D.友元函数19.下列关于动态联编的描述中,错误的是(D)。
A.动态联编是以虚函数为基础B.动态联编是运行时确定所调用的函数代码的C.动态联编调用函数操作是指向对象的指针或对象引用D.动态联编是在编译时确定操作函数的20.关于纯虚函数和抽象类的描述中,错误的是( C )。
A.纯虚函数是一种特殊的虚函数,它没有具体的实现B.抽象类是指具有纯虚函数的类C.一个基类中说明有纯虚函数,该基类派生类一定不再是抽象类D. 抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出21.C++源文件的扩展名为( A )。
A.cpp B.c C.txt D.exe22.在C++语言中,(A )的陈述是正确的。
A.能使用关键字并区分大小写B.能使用关键字并不区分大小写C.不能使用关键字并区分大小写D.不能使用关键字并不区分大小写23.运算符+、=、*、>=中,优先级最高的运算符是(C)。
A.+ B.= C.* D.>=24.下列不合法的变量名为(A )。
A.int B.int1 C.name_1 D.name025.已知x=43,ch=‘A’,y=0;则表达式(x>=y&&ch<’B’&&!y)的值是(C )。
A.0 B.语法错C.1 D.“假”A.语句for(i=0;;i++)表示无限循环B.for(;;)表示无限循环26.以下不正确的是(c)。