C++期末复习选择判断与填空.docx
- 文档编号:26334762
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:30
- 大小:155.67KB
C++期末复习选择判断与填空.docx
《C++期末复习选择判断与填空.docx》由会员分享,可在线阅读,更多相关《C++期末复习选择判断与填空.docx(30页珍藏版)》请在冰豆网上搜索。
C++期末复习选择判断与填空
C++期末复习(选择、判断与填空)
一、单项选择
1、在C++中,函数原型不能标识(D)
A、函数的返回类型B、函数参数的个数
C、函数参数类型D、函数的功能
2、在C++程序中,对象之间的相互通信通过(B)
A、继承实现B、调用成员函数实现
C、封装实现D、函数重载实现
3、对于任意一个类,析构函数的个数最多为(B)
B、是类与类的关系
A、0B、1C、2
4、下面函数模板定义中不正确的是(
A、template
}
C、template
TF(Tx){returnx*x;
}
5、友元关系不能(A)
A、继承
D、3
A)
B、template
}
D、template
}
C、是一个类的成员函数与另一个类的关系
D、提高程序的运行效率
6、下面说法正确的是(B)
A、内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方
B、内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方
C、类的内联函数必须在类体内定义
D、类的内联函数必须在类体外通过加关键字inline定义
7、可以用p.a的形式访问派生类对象p的基类成员a,其中a是(D)
A、私有继承的公有成员B、公有继承的私有成员
C、公有继承的保护成员D、公有继承的公有成员
8、在公有派生情况下,有关派生类对象和基类对象的关系,不正确的叙述是(C)
A、派生类的对象可以赋给基类的对象
B、派生类的对象可以初始化基类的引用
C、派生类的对象可以直接访问基类中的成员
D、派生类的对象的地址可以赋给指向基类的指针
9、对于类定义
classA{
public:
virtualvoidfunc1(){}
voidfunc2(){}
};
classB:
publicA{
public:
voidfunc1(){cout<<"classBfunc1"< virtualvoidfunc2(){cout<<"classBfunc2"< }; 下面正确的叙述是(C) A、A: : func2()和B: : func1()都是虚函数 B、A: : func2()和B: : func1()都不是虚函数 C、B: : func1()是虚函数,而A: : func2()不是虚函数 D、B: : func1()不是虚函数,而A: : func2()是虚函数 10、继承的情况下,基类成员在派生类中的访问权限(A) A、受限制B、保持不变C、受保护D、不受保护 11、通过(A)调用虚函数时,采用动态束定。 A、对象指针B、对象名C、成员名限定D、派生类名 12、.在inta=3,*p=&a;中,*p的值是(D) A、变量a的地址值B、无意义C、变量p的地址值D、3 13、C++类体系中,不能被派生类继承的有(B) A、转换函数B、构造函数C、虚函数D、静态成员函数14、假定一个类的构造函数为A(intaa,intbb){a=aa--;b=a*bb--;},则执行Ax(4,5);语句后, x.a和x.b的值分别为(C) D、20和5 A、4和5B、5和4C、4和20 15、C++对C语言作了很多改进,即从面向过程变成为面向对象的主要原因是(D) A、增加了一些新的运算符 C、规定函数说明符必须用原型 16、下列符号不能组成标识符的是 A、连接符B、下划线 17、复制构造函数的形参是(C A、某个对象名 C、某个对象的引用名 B、允许函数重载,并允许设置缺省参数 D、弓|进了类和对象的概念 (A) C、大小写字母D、数字字符 )。 B、某个对象的成员名 D、某个对象的指针名 18、一个函数功能不太复杂,但要求被频繁调用,选用(A) 19、下列不是描述类的成员函数的是(C) A、构造函数B、析构函数 C、友元函数D、拷贝构造函数 20、C++语言中所有在函数中定义的变量,连同形式参数,都属于(B) A、全局变量B、局部变量 C、静态变量D、函数 21、定义新类是通过(C)实现的。 A、信息隐藏B、数据封装 C、继承机制D、数据抽象 22、下面有关类说法不正确的是( C) A、一个类可以有多个构造函数 B、一个类只有一个析构函数 C、析构函数需要指定参数 D、在一个类中可以说明具有类类型的数据成员 23、派生类的对象只能对它的(A)是可访问的。 A、公有继承的公有成员 B、公有继承的私有成员 C、公有继承的保护成员 D、私有继承的保护成员 24、下列不能作为类的成员的是( B) A、自身类对象的指针 B、自身类对象 C、自身类对象的引用 D、另一个类的对象 25、如果一个类至少有一个纯虚函数,那么就称该类为(A) A抽象类B虚基类 C派生类D以上都不对 26、在派生类中重新定义虚函数时必须在(A)方面与基类保持一致 A、参数类型B、参数名字C、操作内容D、赋值 27、下列静态数据成员的特性中,(C)是错误的。 A、说明静态数据成员时前边要加修饰符static; B、静态数据成员要在类体外进行初始化; C、静态数据成员不是所有对象所共用的; D、引用静态数据成员时,要在其名称前加<类名>和作用域运算符; 28、关于new运算符的下列描述中,(D)是错误的。 A、它可以用来动态创建对象和对象数组; B、使用它创建的对象或对象数组可以使用运算符delete删除; C、使用它创建对象时要调用构造函数; D、使用它创建对象数组时必须指定初始值; 29、(D)是析构函数的特征。 A、析构函数可以有一个或多个参数; C、析构函数的定义只能在类体内; 30、假定AB为一个类,则执行ABx; A、有参构造函数B、无参构造函数 31、C++语言建立类族是通过(B) A、类的嵌套B、类的继承 32、静态成员函数不能说明为(C A、整型函数B、浮点函数 B、析构函数名与类名不同; D、一个类中只能定义一个析构函数; 语句时将自动调用该类的(B) C、拷贝构造函数D、赋值重载函数 C、虚函数D、抽象类 ) C、虚函数D、字符型函数 33、在C++中,数据封装要解决的问题是(D) A、数据规范化排列B、数据高速转换C、避免数据丢失 D、切断了不同模块之间的数据的非法使用 34、在C++中有下列4条语句: inthot=100;int&rsd=hot; hot=hot+100;cout< 执行这4条语句后输出为(C) 所有成员缺省定义为(C) 41、类的指针成员的初始化是通过函数完成的,这个函数通常是( 43、静态成员函数没有(B) A、返回值B、this指针C、指针参数D、返回类型 44、当一个类的某个函数被说明为virtual时,该函数在该类的所有派生类中(A) A、都是虚函数B、只有被重新说明为virtual时才是虚函数 C、都不是虚函数D、只有被重新说明时才是虚函数 45、下面叙述不正确的是(D) A、 派生类一般都用公有派生 B、对基类成员的访问必须是无二义性的 C、 赋值兼容规则也适用于多重继承的组合 D、基类的公有成员在派生类中仍然是公有的 46、在 C++中实现封装是借助于 (B) A、 枚举B、类 C、数组 D、函数 47、局部变量可以隐藏全局变量,那么在有同名全局变量和局部变量的情形时,可以用(A)提供对全局变量的访问。 A域运算符B类运算符C重载D引用 48、(C)是一个在基类中说明的虚函数,它在该基类中没有定义,但要求任何派生类都必须定义自己的版本。 A、虚析构函数B、虚构造函数C、纯虚函数D、静态成员函数 49、对于派生类的构造函数,在定义对象时构造函数的执行顺序为: 先执行(B),再执行(A),后执行(C)。 A成员对象的构造函数B基类的构造函数C派生类本身的构造函数 50、静态成员函数仅能访问(D)。 A、静态的数据成员B、非静态的成员函数C、非静态的数据成员D、以上都不对 51、102、类模板的使用实际上是将类模板实例化成一个具体的(A) D) B、可以用一个空指针赋给某个指针 D、两个同类型的指针可以相加 52、下列关于指针的操作中,错误的是( A、两个同类型的指针可以进行比较运算 C、一个指针可以加上两个整数之差 53、关于虚函数的描述中,(C)是正确的 A、虚函数是一个static类型的成员函数 B、虚函数是一个非成员函数 C、基类中说明了虚函数后,派生类中将其对应的函数可不必说明为虚函数 D、派生类的虚函数与基类的虚函数具有不同的参数个数和类型 54、系统在调用重载函数时,往往根据一些条件确定哪个重载函数被调用,在下列选项中, 不能作为依据的是(D) A、参数个数B、参数的类型C、函数名称D、函数的类型 55、友元的作用(A) A、提高程序的运行效率 B、 加强类的封装性 C、实现数据的隐藏性 D、 增加成员函数的种类 56、构造函数不具备的特征的是 (D ) A、构造函数的函数名与类名相同B、构造函数可以重载 C、构造函数可以设置默认参数D、构造函数必须指定类型说明 57、已知: print()函数是一个类的常成员函数,它无返回值,下列表示中,(A)是正确的 A、voidprint()const;B、constvoidprint(); C、voidconstprint();D、voidprint(const); 58、继承机制的作用是(C) A、信息隐藏 B、数据封装 C、 定义新类 D、 数据抽象 59、类的析构函数的作用是(D) A、一般成员函数 B、类的初始化 C、 对象的初始化 D、 删除对象 60、类的析构函数是在 (C)调用的。 A、类创建时B、 创建对象时 C、 删除对象时 D、 不自动调用 61、在(C)情况 下适宜采用inline 定义内联函数。 A、函数体含有循环语句B、函数体含有递归语句 C、函数代码少、频繁调用D、函数代码多、不常调用 62、如果类A被说明成类B的友元,则(D) A、类A的成员即类B的成员B、类B的成员即类A的成员 C、类A的成员函数不得访问类B的成员D、类B不一定是类A的友元 63、已知: 类A中一个成员函数说明如下: voidSet(A&a);其中,A&的含义是(C) C、a是类A对象的引用,用来作函数Set()的参数 D、变量A与a按位与作为函数Set()的参数 64、对于C/C++语言的函数,下列叙述中正确的是(A) A、函数的定义不能嵌套,但函数调用可以嵌套 B、函数的定义可以嵌套,但函数调用不能嵌套 C、函数的定义和调用都不能嵌套 D、函数的定义和调用都可以嵌套 65、C++类体系中,不能被派生类继承的有(B) A、转换函数B、构造函数C、虚函数D、静态成员函数 66、在C++中,关于下列函数参数的描述中,(B)是正确的。 A、C++语言中,实参是按照自左至右的顺序求值的; B、若一个参数设置了默认值,则其右边的所有参数都具有默认值; C、函数参数的默认值不允许是表达式; D、设置参数默认值时,应该全部参数都设置; 67、在下列表示引用的方法中,(A)是正确的。 已知: intm=10; A、int&x=m;B、int&y=10; C、int&z;D、float&t=&m; 68、假定AB为一个类,则该类的拷贝构造函数的声明语句为(C)。 A、AB&(ABx);B、AB(ABx)C、AB(AB&);D、AB(AB*x) 69、关于C++与C语言关系的描述中,(D)是错误的。 A、C语言是C++语言的一个子集B、C语言与C++语言是兼容的 C、C++语言对C语言进行了一些改进D、C++语言和C语言都是面向对象的 70、下列关于构造函数的描述中,(A)是正确的。 A、构造函数可以设置缺省参数; B、构造函数可以被继承; C、构造函数可以对静态数据成员进行初始化; D、构造函数可以说明为虚函数; 71、定义析构函数时,应该注意( C )。 A、其名与类名完全相同 B、 返回类型是void 类型 C、无形参,也不可重载 D、 函数体中必须有 delete语句 72、实现运行时的多态性用(D )。 A、重载函数B、构造函数C、析构函数D、虚函数 73、关于堆运算符的下列描述中,(C)是错误的。 A、使用堆运算符可以动态建立或删除对象; B、new运算符创建对象时要调用构造函数; C、可以在使用new[]创建数组时,为每个数组元素指定初始值; D、delete运算符可以作用于空指针; 74、下列描述中,(D)是抽象类的特性。 A、可以说明虚函数;B、可以进行构造函数重载; C、可以定义友元函数;D、不能说明其对象。 75、对于结构中定义的成员,其隐含访问权限为(A)。 A、publicB、protectedC、privateD、static 76、在下面的函数声明中,存在着语法错误的是(D)。 A、voidBC(inta,int);B、voidBD(int,int); C、voidBE(int,int=5);D、voidBF(intx;inty); 77、假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为(B)。 A、ABoperator+(AB&a,AB&b);B、ABoperator+(AB&a); C、operator+(ABa);D、AB&operator+(); 78、在下列关键字中,用以说明类中公有成员的是(A)。 A、public;B、private;C、protected;D、friend 79、下列的各类函数中,(C)不是类的成员函数。 A、构造函数;B、析构函数;C、友元函数: D、拷贝初始化构造函数 80、作用域运算符的功能是(D)。 A、标识作用域的级别的;B、指出作用域的范围的; 81、(B)是不可以作为该类的成员的 A、自身类对象的指针;B、自身类的对象; C、自身类对象的引用;D、另一个类的对象。 82、(D)不是构造函数的特征。 A、构造函数的函数名与类名相同;B、构造函数可以重载, C、构造函数可以设置缺省参数;D、构造函数必须指定类型说明。 (注: 构造函数不必指定函数返回类型,构造函数返回类型由系统指定) 83、(A)是析构函数的特征。 A、一个类中只能定义一个析构函数; B、析构函数名与类名不同;(注: 相同,前面加~以区别构造函数) C、析构函数的定义只能在类体内; D、析构函数可以有一个或多个参数。 84、通常的拷贝初始化构造函数的参数是(C)。 A、某个对象名;B、某个对象的成员名; C、某个对象的引用名;D、某个对象的指针名。 85、关于成员函数特征的下述描述中,(A)是错误的。 A、成员函数一定是内联函数;(注: 可以是内联函数,也可以是外联函数) B、成员函数可以重载;C、成员函数可以设置参数的缺省值; D、成员函数可以是静态的。 86、下述静态数据成员的特性中,(D)是错误的。 A、说明静态数据成员时前边要加修饰符static; B、静态数据成员要在类体外进行初始化; C、引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符; (注: 也可以用<对象名>.<成员名>访问) D、静态数据成员不是所有对象所共用的。 87、友元的作用(A)。 A、提高程序的运用效率;B、加强类的封装性;D、增加成员函数的种类。 C、实现数据的隐藏性;(注: 友元打破类的封装性,可以直接访问类的私有成员) 88、已知一个类A,(C)是指向类A成员函数的指针。 假设类有三个公有成员: voidf1(int),voidf2(int)和inta。 A、A*p;//指向类A对象的指针 B、intA: : *pc=&A: : a;//指向数据成员的指针 C、voidA: : *pa;//改为=>void(A: : *pa)(int)=A: : f1;或=A: : A: : f2; D、A*pp;//指向类A对象的指针 89、运算符->*的功能是(A)。 A、用来表示指向对象指针对指向类成员指针的操作; B、用来表示对象对指向类成员指针的操作; C、用来表示指向对象指针对类成员的操作; D、用来表示对象类成员的操作。 90、已知f1(int)是类A的公有成员函数,p是指向成员函数f1()的指针,采用(B)是正确的。 A、p=fl;B、p=A: : f1;C、p=A: : f1();D、p=f1(); 91、已知: p是一个指向类A数据成员m的指针,A1是类A的一个对象。 如果要给m赋值为5,(C)是正确的。 A、A1.p=5;B、A1->p=5;C、A1.*p=5;D、*A1.p=5; 92、已知: 类A中一个成员函数说明如下: voidSet(A&a);其中,A&a的含意是(C) A、指向类A的指针为a;B、将a的地址值赋给变量Set; C、a是类A的对象引用,用来作函数Set()的形参; D、变量A与a按位相与作为函数Set()的参数。 93、下列关于对象数组的描述中,(D)是错的。 A、对象数组的下标是从0开始的; B、对象数组的数组名是一个常量指针: C、对象数组的每个元素是同一个类的对象; D、对象数组只能赋初值,而不能被赋值。 94、下列定义中,(B)是定义指向数组的指针p。 A、int*p[5];//指针数组B、int(*p)[5];//行数组指针 C、(int*)p[5];D、int*p[];//指针数组 95、下列说明中constchar*ptr;ptr应该是(C) A、指向字符常量的指针;B、指向字符的常量指针; C、指向字符串常量的指针;D、指向字符串的常量指针; 注: 常量的指针-指针指向的数据是常量;常量指针-指针本身是常量。 A)是正确的。 96、已知: print()函数是一个类的常成员函数,它无返回值,下列表示中,( A、voidprint()const;B、constvoidprint(); C、voidconstprint();D、voidprint(const); 97、关于new运算符的下列描述中,(D)是错的。 A、它可以用来动态创建对象和对象数组; B、使用它创建的对象或对象数组可以使用运算符delete删除; C、使用它创建对象时要调用构造函数; D、使用它创建对象数组时必须指定初始值。 注: 创建对象可以指定初值,也可以不指定;但创建对象数组不能指定初值。 98、关于delete运算符的下列描述中,(C)是错的。 A、它必须用于new返回的指针;C、对一个指针可以使用多次该运算符; B、它也适用于空指针;D、指针名前只用一对方括号符,不管所删除数组的维数。 99、具有转换函数功能的构造函数,应该是(B)。 A、不带参数的构造函数;B、带有一个参数的构造函数; C、带有两个以上参数的构造函数;D、缺省构造函数。 100、下列对派生类的描述中,(D)是错的。 A、一个派生类可以作另一个派生类的基类; B、派生类至少有一个基类; C、派生类的成员除了它自己的成员外,还包含了它的基类的成员; D、派生类中继承的基类成员的访问权限到派生类保持不变。 101、派生类的对象对它的基类成员中(A)是可以访问的。 A、公有继承的公有成员;B、公有继承的私有成员; C、公有继承的保护成员;D、私有继承的公有成员。 101、对基类和派生类的关系描述中,(B)是错的。 A、派生类是基类的具体化;B、派生类是基类的子集; C、派生类是基类定义的延续;D、派生类是基类的组合。 102、派生类的构造函数的成员初始化列中,不能包含(C)。 A、基类的构造函数;〃用于基类子对象的构造(初始化) B、派生类中子对象的初始化; C、基类的子对象初始化;〃基类子对象的初始化,可以! D、派生类中一般数据成员的初始化。 103、关于子类型的描述中,(A)是错的。 A、子类型就是指派生类是基类的子类型;//公有继承 B、一种类型当它至少提供了另一种类型的行为,则这种类型是另一种类型的子类型; C、在公有继承下,派生类是基类的子类型;D、子类型关系是不可逆的。 104、关于多继承二义性的描述中,(C)是错的。 A、一个派生类的两个基类中都有某个同名成员,在派生类中对这个成员的访问可能出现二义性; B、解决二义性的最常用的方法是对成员名的限定法; C、基类和派生类中同时出现的同名函数,也存在二义性问题; D、一个派生类是从两个基类派生来的,而这两个基类又有一个共同的基类,对该
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 期末 复习 选择 判断 填空
![提示](https://static.bdocx.com/images/bang_tan.gif)