《面向对象程序设计_复习提纲_2022-2022.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计_复习提纲_2022-2022.docx(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、面向对象程序设计_复习提纲_2022-2022 一、填空题 1.c+中变量按照作用范围可分为局部变量和全局变量。 2.动态联编支持的多态性称为运行时的多态性,也称为动态多态性。 3.在一个函数的定义或声明前加上关键字inline时,该函数就声明为内联函数。 4.在类中定义和实现的函数称为成员函数。 5.程序中可以有多个名称相同,但参数类型不同或个数不同或类型与个数都不同的函数,这种现象称为函数重载。 6.若定义int a4=1,2,3,4,5,6,7,8,9,则数组a的第一维的大小是 3 。 7.设置虚基类使用的关键字为virtual。 8.基类的构造函数和析构函数,不能被派生类继承。 9.含
2、有纯虚函数的类称为抽象类,它不能定义对象,主要用作基类。 10.动态联编支持的多态性称为运行时的多态性。 11.运算符重载函数的两种主要形式有成员函数和友元函数。 12.使用模板是为了提高代码的可重用性。 13.在C+语言中,变量按照生存周期分为静态存储类别变量和自动存储类别变量。 14.非成员函数应声明为类的友元函数,才能访问该类的private成员。 15.在类中,数据成员和成员函数的默认访问属性是private(或私有的)。 16.如果一个类至少有一个纯虚函数,那么该类被称为抽象类。 17.对于含有对象成员的派生类,其构造函数的执行顺序为:先执行基类的构造函数、再执行对象成员所属类的构造
3、函数,最后执行派生类的构造函数。 18.构造函数是一种特殊的成员函数,其作用是对类的数据成员进行初始化并执行对象的其他内部管理操作。 19.静态成员函数不能直接引用类中说明的非静态成员。 20.对于含有对象成员的派生类,其析构函数的执行顺序为:先派生类的析构函数、再执行对象成员所属类的析构函数,最后执行基类的析构造函数。 21.设置友元函数的目的是为能够访问该类的私有成员。 22.运算符重载仍然保持原来的优先级、结合性和语法结构。 23.基类的私有成员不能被派生类的成员访问。 24.静态联编支持的多态性称为编译时的多态性,也称静态多态性。 25.任何类中允许有三种访问权限的数据,这三种访问权限
4、分别是私有的(private)、被保护的(protected)、公有的(public)。 26.C+中封装性、继承性和多态性是面向对象程序设计的三个主要特性。 27.实现运行时的多态性要使用继承和虚函数。 28.将双目运算符重载为某类的成员函数时,该成员函数的左操作数为当前对象(或*this),右操作数为函数参数。 29.C+程序运行时,总是从主函数(main)开始执行。 30.从实现的角度看,多态性可以分为编译时的多态性和运行时的多态性。 31.抽象类只能作为基类使用,而不能声明它的对象。 32.一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的可重用性。 33.纯虚
5、函数的声明格式为:virtual 函数返回值的数据类型函数名(形参列表)=0;。 34.静态成员函数没有this指针。 35.类有两个特殊的成员函数,即构造函数和析构函数。 36.运算符op重载时,其函数名是由operator op构成。 37.无符号整型的类型关键字是unsigned。 39.若定义int a23=2,3;则值为3的数组元素是a10。 40.B类是A类的友元,C类是B类的友元,则C类不是A类的友元(如果没有显式声明C 是A的友元)。 41.模板声明中的第一个符号总是关键字template。 42.C+语言规定对所有用到的变量要“先定义,后使用”。 43.从用户使用的角度看,函
6、数有两种,即系统(库)函数和用户自定义函数。 44.一个变量的地址称为该变量的指针。 45.使几个不同的变量共占同一段内存的结构称为共用体。 46.引用是给对象取一个别名,它引入了对象的同义词。 47.用已有对象复制一个新对象时调用复制构造函数。 48.C+提供的预处理功能主要有宏定义、文件包含和条件编译。 49.C+中static用声明的变量称为静态变量。 50.程序的三种控制结构包括顺序结构、选择结构和循环结构。 51.C+中可重用性是通过继承这一机制来实现的。 52.名称为sample的类的复制构造函数的原型声明语句为sample(const sample &);。 53.如果参加运算的
7、两个数中有一个数为float型数据,则运算的结果是double型。 54.在定义函数时函数名后面括号中的变量名称为形式参数,在主调函数中调用一个函数时,函数名后面括号中的参数称为实际参数。 55.如果有一个变量是专门用来存放另一变量的地址(即指针)的,则它称为指针变量。 56.在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用。 57.一个新类从已有的类那里获得其已有特性,这种现象称为类的继承。 58.向不同的对象发送同一个消息,不同的对象在接收时会产生不同的行为(即方法),这种现象称为多态性。 59.在派生类中,对基类的继承方式可以有公用继承、私有继承、保护继承。 6
8、0.派生类中的成员包括从基类继承过来的成员和自己增加的成员两大部分。 二、选择题 1在一个C+程序文件中,main()函数的位置_D_。 A)必须在开始B)必须在最后C)必须在系统调用库函数后D)可以任意 2下列属于C+合法的字符常量是_C_。 A)97 B)A C)t D)0 3设int x=10,x+=3+x%(-3),则x=_A_。 A)14 B)15 C)11 D)12 4下列运算符,不能重载为友元函数的是_A_。 A)=、()、- B)+、-、+、- C)、= D)+=、-=、*=、/= 5在C+中,要实现动态联编,必须使用_D_调用虚函数 A)类名B)派生类指针C)对象名D)基类指
9、针 6成员运算符obj1obj2被C+编译器解释为_D_。 A)operator() B)(obj1,obj2) C)obj2.operator(obj1) D)obj1.operator(obj2) 7在C+中,用于实现运行时多态性的是_B_。 A)内联函数B)虚函数C)模板函数D)重载函数 8在下列函数原型中,可以作为类AA构造函数的是_D_。 A)void AA(int);B)int AA();C)AA(int)const;D)AA(int); 9.对于语句cout= C) : D)/ 12函数调用语句fun(a+b,3,max(n-1,b);中,实参的个数为_A_ A)3 B)4 C)
10、5 D)6 13若有说明int a10=1,2,3,4,5,6,7,8,9,10,*p=a;,则数值为9的表达式是_B_。 A) *p+9 B) *(p+8) C) *p+=9 D) p+7 14有关虚函数的说法不正确的是_B_。 A)只有类的成员函数才能说明为虚函数B)静态成员函数可以是虚函数 C)构造函数不能是虚函数D)析构函数可以是虚函数 15逗号表达式a=4,b=6,a-,b-,a+b的值为_B_。 A)9 B)8 C)10 D)6 16对于类中定义的成员,其隐含访问权限为_B_。 A)public B)private C)static D)protected 17通常拷贝构造函数的参
11、数是_C_。 A)当前类的对象名B)当前类的对象的成员名 C)当前类的对象的引用名D)当前类的对象的指针名 18声明一个类的对象时,系统自动调用一个函数;撤消对象时,系统自动调用一个函数;这两个函数分别为_C_。 A)成员函数;构造函数B)复制构造函数;析构函数 C)构造函数;析构函数D)析构函数;复制构造函数 19当一个派生类私有继承一个基类时,基类中的所有公有成员和保护成员成为派生类的_A_。 A)private成员B)protected成员C)public成员D)友元 20在C+中,要实现动态联编,必须使用_D_调用虚函数 A)类名B)派生类指针C)对象名D)基类指针 21若一个类中含有
12、纯虚函数,则该类称为_A_。 A)抽象类B)纯基类C)派生类D)基类 22设n=8,i=4,则赋值运算n%=i+1执行后,n的值是_B_。 A)0 B)3 C)2 D)1 23C+语言是从早期的C语言逐渐发展演变而来的,与C语言相比,它在求解问题方法上进行的最大改进是_D_。 A) 面向过程B) 复用性C) 安全性D) 面向对象 24类的成员函数不包括_C_。 A)构造函数B)析构函数C)友元函数D)拷贝构造函数 25下列字符串常量表示中,_D_是错误的。 A) ”ABC0”B)”OKt”C)”abcdn”D)ABC 26友元运算符obj1obj2被C+编译器解释为_A_。 A) operat
13、or(obj1,obj2) B) (obj1,obj2) C) obj2.operator(obj1) D) obj1.operator(obj2) 27下列运算符中,在C+语言中不能重载的是_C_。 A) * B) = C) : D)/ 28下面对友元函数描述正确的是_C_。 A)友元函数的实现必须在类的内部定义 B)友元函数是类的成员函数 C)友元函数破坏了类的封装性和隐藏性 D)友元函数不能访问类的私有成员 29下面叙述不正确的是_A_。 A)基类的保护成员在派生类中仍然是保护成员 B)基类的保护成员在公有派生类中仍然是保护成员 C)基类的保护成员在私有派生类中是私有成员 D)对基类成员
14、的访问必须是无二义性 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.有
15、关析构函数的说法不正确的是_D_。 A.析构函数有且只有一个 B.析构函数无任何函数类型 C.析构函数没有形参 D.析构函数的作用是在对象被撤消时收回先前分配的内存空间 清理功能 34.通常拷贝构造函数的参数是_C_。 A.某个对象名 B.某个对象的成员名 C.某个对象的引用名 D.某个对象的指针名 35.如果在基类中将show声明为不带返回值的纯虚函数,正确的写法是_C_。 A.virtual show()=0; B.virtual void show(); C.virtual void show()=0; D.void show=0 virtual; 36.下面关于友元的描述中,错误的是_
16、D_。 A.友元函数可以访问该类的私有数据成员 B.一个类的友元类中的成员函数都是这个类的友元函数 C.友元可以提高程序的运行效率 D.类与类之间的友元关系可以继承 37.在C+中,_B_运算符不能重载。 A. + B.?: C.- D. 39.在声明类时,下面的说法正确的是_C_。 A.可以在类的声明中给数据成员赋初值 B.数据成员的数据类型可以是register (CPU中存放) C.private,public,protected可以按任意顺序出现 D.没有用private,public,protected定义的数据成员是公有成员 40.继承具有_B_,即当基类本身也是某一个类的派生类时
17、,底层的派生类也会自动继承间接基类的成员。 A.规律性 B.传递性 C.重复性 D.多样性 41.在多重继承中,公有派生和私有派生对于基类成员在派生类中的可访问性与单继承的规则_A_。 A.完全相同 B.完全不同 C.部分相同,部分不同 D.以上都不对 42.关于成员函数特征的下述描述中,_A_是错误的。 A.成员函数一定是内置函数 B.成员函数可以重载 C.成员函数可以设置参数的默认值 D.成员函数可以是静态的 43.下列的各类函数中,_C_不是类的成员函数。 A.构造函数 B.析构函数 C.友元函数 D.拷贝构造函数 44.模板的使用是为了_C_。 A.加强类的封装性 B.提高代码的运行效
18、率 C.提高代码的可重用性 D.实现多态性 45.下列表示引用的方法中,_D_是正确的。已知:int m=10; A. float &t=&m; B.int &y=10; C.int &z; D. int &x=m; 46.在下面有关对构造函数的描述中,正确的是_A_。 A.构造函数没有返回值 B.构造函数的名字与类名不完全相同 (必须相同) C.构造函数必须带有参数 D.构造函数必须定义,不能默认 47.友元的作用之一是_D_。 A.增加成员函数的种类 B.加强类的封装性 C.实现数据的隐藏性 D.提高程序的运行效率 48.通常复制构造函数的参数是_C_。 A.某个对象名 B.某个对象的成员
19、名 C.某个对象的引用名 D.某个对象的指针名 49.下列运算符中,_B_运算符在C+中不能重载。 A. + B.?: C.- D.= 50.下列关于运算符重载的描述中,_C_是正确的。 A.运算符重载可以改变操作数的个数 B.运算符重载可以改变优先级 C.运算符重载不可以改变语法结构 D.运算符重载可以改变结合性 51.设有定义int a ;float f;double i;则表达式10+a+i*f值的数据类型是_C_。 A.int B.float C.double D.不确定 52.对虚函数的调用_D_。 A.一定使用动态联编 B.必须使用动态联编 C.一定使用静态联编 D.不一定使用动态
20、联编 53.派生类的对象对它的基类_A_是可以访问的。 A.公有继承的公有成员 B.公有继承的私有成员 C.公有继承的保护成员 D.私有继承的公有成员 54.类模板的使用实际上是将类模板实例化成一个具体的_A_。 A.类(模板类) B.对象 C.函数 D.模板函数 55.下列关于switch语句的描述中,_A_是正确的。 A. switch语句中default子句可以没有,也可有一个 B. switch语句中每个语句序列中必须有break语句 C. switch语句中default子句只能放在最后 D. switch语句中case子句后面的表达式只能是整型表达式 56.系统在调用重载函数时往往
21、根据一些条件确定哪个重载函数被调用,在下列选项中,不能作为依据的是_D_。 A.参数个数 B.参数的类型 C.函数名称 D.函数的类型(即为函数返回值的数据类型) 57.在int b3=1,3,2,4,5,6,0;中b22的值是_C_。 A.0 B.5 C.6 D.2 58.下列字符串常量表示中,_A_是错误的。 A.”yes”or”No” B.”OK!” C.”abcdn” D.”ABC0” 59.在C+中,关于设置参数的默认值的描述中,正确的是_C_。 A.不允许设置参数的默认值 B.设置参数默认值只能在定义函数时设置 C.设置参数默认值时,应该是先设置右边的再设置左边的 D.设置参数默认
22、值时,应该全部参数都设置 60.有关类的说法中,不正确的是_D_。 A.类是一种用户定义的数据类型 B.类中的成员函数才能存取类中的私有数据 C.在类中,如果不作特别说明,所指的数据均为私有类型 D.在类中,如果不作特别说明,所指的成员函数均为公有类型 61.有关类和对象的说法不正确的是_C_。 A.对象是类的一个实例 B.任何一个对象只能属于一个具体的类 C.一个类只能有一个对象 D.类与对象的关系和数据类型与变量的关系相似 62.有关构造函数的说法不正确的是_D_。 A.构造函数名字和类的名字一样 B.构造函数在说明类的某个对象时自动执行 C.构造函数无任何函数类型 D.构造函数有且只有一个(构造函数可以重载) 63._ D _不是构造函数的特征。 A.构造函数的函数名与类名相同 B.构造函数可以重载 C.构造函数可以设置默认参数 D.构造函数必须指定类型说明 64._A_是析构函数的特征。 A.一个类中只能定义一个析构函数 B.析构函数名与类名不同 C.析构函数的定义只能在类体内 D.析构函数可以有一个或多个参数 三、读程序写结果 1. #include