一、填空题
1.c++中变量按照作用范围可分为局部变量和全局变量。
2.动态联编支持的多态性称为运行时的多态性,也称为动态多态性。
3.在一个函数的定义或声明前加上关键字inline时,该函数就声明为内联函数。 4.在类中定义和实现的函数称为成员函数。
5.程序中可以有多个名称相同,但参数类型不同或个数不同或类型与个数都不同的函数,这种现象称为函数重载。
6.若定义int a[][4]={1,2,3,4,5,6,7,8,9},则数组a的第一维的大小是 3 。 7.设置虚基类使用的关键字为virtual。
8.基类的构造函数和析构函数,不能被派生类继承。
9.含有纯虚函数的类称为抽象类,它不能定义对象,主要用作基类。 10.动态联编支持的多态性称为运行时的多态性。
11.运算符重载函数的两种主要形式有成员函数和友元函数。 12.使用模板是为了提高代码的可重用性。
13.在C++语言中,变量按照生存周期分为静态存储类别变量和自动存储类别变量。 14.非成员函数应声明为类的友元函数,才能访问该类的private成员。 15.在类中,数据成员和成员函数的默认访问属性是private(或私有的)。 16.如果一个类至少有一个纯虚函数,那么该类被称为抽象类。
17.对于含有对象成员的派生类,其构造函数的执行顺序为:先执行基类的构造函数、再执行对象成员所属类的构造函数,最后执行派生类的构造函数。
18.构造函数是一种特殊的成员函数,其作用是对类的数据成员进行初始化并执行对象的其他内部管理操作。
19.静态成员函数不能直接引用类中说明的非静态成员。
20.对于含有对象成员的派生类,其析构函数的执行顺序为:先派生类的析构函数、再执行对象成员所属类的析构函数,最后执行基类的析构造函数。 21.设置友元函数的目的是为能够访问该类的私有成员。 22.运算符重载仍然保持原来的优先级、结合性和语法结构。 23.基类的私有成员不能被派生类的成员访问。
24.静态联编支持的多态性称为编译时的多态性,也称静态多态性。
25.任何类中允许有三种访问权限的数据,这三种访问权限分别是私有的(private)、被保护的(protected)、公有的(public)。
26.C++中封装性、继承性和多态性是面向对象程序设计的三个主要特性。 27.实现运行时的多态性要使用继承和虚函数。
28.将双目运算符重载为某类的成员函数时,该成员函数的左操作数为当前对象(或*this),右操作数为函数参数。
29.C++程序运行时,总是从主函数(main)开始执行。
30.从实现的角度看,多态性可以分为编译时的多态性和运行时的多态性。 31.抽象类只能作为基类使用,而不能声明它的对象。
32.一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的可重用性。
33.纯虚函数的声明格式为:virtual 函数返回值的数据类型 函数名(形参列表)=0;。 34.静态成员函数没有this指针。
35.类有两个特殊的成员函数,即构造函数和析构函数。 36.运算符op重载时,其函数名是由operator op构成。 37.无符号整型的类型关键字是unsigned。
39.若定义int a[2][3]={{2},{3}};则值为3的数组元素是a[1][0]。
40.B类是A类的友元,C类是B类的友元,则C类不是A类的友元(如果没有显式声明C是A的友元)。
41.模板声明中的第一个符号总是关键字template。 42.C++语言规定对所有用到的变量要“先定义,后使用”。
43.从用户使用的角度看,函数有两种,即系统(库)函数和用户自定义函数。 44.一个变量的地址称为该变量的指针。
45.使几个不同的变量共占同一段内存的结构称为共用体。 46.引用是给对象取一个别名,它引入了对象的同义词。 47.用已有对象复制一个新对象时调用复制构造函数。
48.C++提供的预处理功能主要有宏定义、文件包含和条件编译。 49.C++中static用声明的变量称为静态变量。
50.程序的三种控制结构包括顺序结构、选择结构和循环结构。 51.C++中可重用性是通过继承这一机制来实现的。
52.名称为sample的类的复制构造函数的原型声明语句为sample(const sample &);。 53.如果参加运算的两个数中有一个数为float型数据,则运算的结果是double型。。 54.在定义函数时函数名后面括号中的变量名称为形式参数,在主调函数中调用一个函数时,函数名后面括号中的参数称为实际参数。
55.如果有一个变量是专门用来存放另一变量的地址(即指针)的,则它称为指针变量。 56.在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用。
57.一个新类从已有的类那里获得其已有特性,这种现象称为类的继承。
58.向不同的对象发送同一个消息,不同的对象在接收时会产生不同的行为(即方法),这种现象称为多态性。
59.在派生类中,对基类的继承方式可以有公用继承、私有继承、保护继承。 60.派生类中的成员包括从基类继承过来的成员和自己增加的成员两大部分。 二、选择题
1.在一个C++程序文件中,main()函数的位置_____D____。
A)必须在开始 B)必须在最后 C)必须在系统调用库函数后 D)可以任意 2.下列属于C++合法的字符常量是_____C_____。 A)'\\97' A)14
B)\B)15
C)'\\t' C)11
D)\D)12
C)<、>、<=、>= C)对象名 B)>(obj1,obj2)
D)obj1.operator>(obj2) C)模板函数
D)重载函数
D)AA(int); D)+=、-=、*=、/= D)基类指针
3.设int x=10,x+=3+x%(-3),则x=____A______。 4.下列运算符,不能重载为友元函数的是____A____。 A)=、()、[]、-> B)+、-、++、-- A)类名
A)operator>()
C)obj2.operator>(obj1) A)内联函数
B)虚函数 B)派生类指针
5.在C++中,要实现动态联编,必须使用______D_______调用虚函数 6.成员运算符obj1>obj2被C++编译器解释为____D_____。
7.在C++中,用于实现运行时多态性的是____B____。
8.在下列函数原型中,可以作为类AA构造函数的是_____D______。 A)void AA(int); B)int AA(); A)“cout”是一个输出流对象 C)“<<”称作流提取运算符 A); A) * A)3 A) *p+9
B). B) >= B)4 B) *(p+8)
C)AA(int)const;
9.对于语句cout< B)“endl”的作用是输出回车换行 D)“x”是一个变量 C)\\ C) :: C)5 C) *p+=9 D)回车键 D)/ D)6 D) p+7 10.编译预处理命令以_____D____结尾。 11.下列运算符中,在C++语言中不能重载的是___C____ 12.函数调用语句fun(a+b,3,max(n-1,b));中,实参的个数为____A___ 13.若有说明int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;,则数值为9的表达式是__B___。 14.有关虚函数的说法不正确的是____B___。 A)只有类的成员函数才能说明为虚函数 C)构造函数不能是虚函数 A)9 A)public B)8 B)private B)静态成员函数可以是虚函数 D)析构函数可以是虚函数 C)10 C)static D)6 D)protected 15.逗号表达式a=4,b=6,a--,b--,a+b的值为___B__。 16.对于类中定义的成员,其隐含访问权限为____B____。 17.通常拷贝构造函数的参数是___C___。 A)当前类的对象名 C)当前类的对象的引用名 数;这两个函数分别为__C__。 A)成员函数;构造函数 C)构造函数;析构函数 的__A_。 A)private成员 A)类名 A)抽象类 A)0 B)当前类的对象的成员名 D)当前类的对象的指针名 18.声明一个类的对象时,系统自动调用一个函数;撤消对象时,系统自动调用一个函 B)复制构造函数;析构函数 D)析构函数;复制构造函数 19.当一个派生类私有继承一个基类时,基类中的所有公有成员和保护成员成为派生类 B)protected成员 C)public成员 B)派生类指针 B)纯基类 B)3 C)对象名 C)派生类 C)2 D)友元 D)基类指针 D)基类 D)1 20.在C++中,要实现动态联编,必须使用___D___调用虚函数 21.若一个类中含有纯虚函数,则该类称为____A___。 22.设n=8,i=4,则赋值运算n%=i+1执行后,n的值是____B___。 23.C++语言是从早期的C语言逐渐发展演变而来的,与C语言相比,它在求解问题方法上进行的最大改进是___D___。 A) 面向过程 A)构造函数 A) ”ABC\\0” B) 复用性 B)析构函数 B)”\\\\OK\\t” C) 安全性 C)友元函数 C)”abcd\\n” B) >(obj1,obj2) D) obj1.operator>(obj2) C) :: D)/ D) 面向对象 D)拷贝构造函数 D)’ABC’ 24.类的成员函数不包括___C___。 25.下列字符串常量表示中,___D___是错误的。 26.友元运算符obj1>obj2被C++编译器解释为____A___。 A) operator>(obj1,obj2) C) obj2.operator>(obj1) A) * B) >= 27.下列运算符中,在C++语言中不能重载的是___C____。 28.下面对友元函数描述正确的是__C____。 A)友元函数的实现必须在类的内部定义 B)友元函数是类的成员函数 C)友元函数破坏了类的封装性和隐藏性 D)友元函数不能访问类的私有成员 29.下面叙述不正确的是___A__。 A)基类的保护成员在派生类中仍然是保护成员 B)基类的保护成员在公有派生类中仍然是保护成员 C)基类的保护成员在私有派生类中是私有成员 D)对基类成员的访问必须是无二义性 30.考虑函数原型void test(int a,int b=7,char z= '*'),下面的函数调用中,属于不 合法调用的是____C___。 A) test(5) B)test(5,8) C)test(6,\ D)test(0,0,'*'); 31.下面关于对象概念的描述中,___D__是错误的。 A.对象代表着正在创建的系统中的一个实体 B.对象之间的信息传递是通过消息进行的 C.对象是一个状态和操作(或方法)的封装体 D.对象就是C语言中的结构体变量 32.使用派生类的主要原因是___B___。 A.提高程序的运行效率 B.提高代码的可重用性 C.加强类的封装性 D.实现数据的隐藏 33.有关析构函数的说法不正确的是___D__。 A.析构函数有且只有一个 B.析构函数无任何函数类型 C.析构函数没有形参 D.析构函数的作用是在对象被撤消时收回先前分配的内存空间 \\\\清理功能 34.通常拷贝构造函数的参数是___C___。 A.某个对象名 B.某个对象的成员名 C.某个对象的引用名 D.某个对象的指针名 B.virtual void show(); D.void show=0 virtual; 35.如果在基类中将show声明为不带返回值的纯虚函数,正确的写法是___C__。 A.virtual show()=0; C.virtual void show()=0; 36.下面关于友元的描述中,错误的是___D___。 A.友元函数可以访问该类的私有数据成员 B.一个类的友元类中的成员函数都是这个类的友元函数 C.友元可以提高程序的运行效率 A. + A.+ B.?: B.= D.类与类之间的友元关系可以继承 C.- C.[] D.<= D.-> 37.在C++中,___B__运算符不能重载。 38.能用友元函数重载的运算符是____A____。 39.在声明类时,下面的说法正确的是___C____。 A.可以在类的声明中给数据成员赋初值 B.数据成员的数据类型可以是register (CPU中存放) C.private,public,protected可以按任意顺序出现 D.没有用private,public,protected定义的数据成员是公有成员 40.继承具有____B__,即当基类本身也是某一个类的派生类时,底层的派生类也会自动继承间接基类的成员。 A.规律性 规则_____A___。 A.完全相同 B.完全不同 C.部分相同,部分不同 D.以上都不对 42.关于成员函数特征的下述描述中,__A__是错误的。 A.成员函数一定是内置函数 B.成员函数可以重载 B.传递性 C.重复性 D.多样性 41.在多重继承中,公有派生和私有派生对于基类成员在派生类中的可访问性与单继承的