面向对象程序设计题库(C )
面向对象程序设计 C 复习题
一选择题(共 45题)1.对类的构造函数和析构函数描述正确的是()。
A.构造函数可以重载,析构函数不能重载√B.构造函数不能重载,析构函数可以重载C.构造函数可以重载,析构函数也可以重载D.构造函数不能重载,析构函数也不能重载2.继承具有(),即当基类本身也是某一个类派生类时,底层的派生类也会自动继承间接基类的成员。
A)规律性 B.传递性√ C.重复性 D.多样性3.假设OneClass为一个类,则该类的复制初始化构造函数的声明语句为()。
(OneClass p); B. OneClass& (OneClass p );C. OneClass(OneClass & p);√D. OneClass (OneClass * p);4.对于结构中定义的成员,其默认的访问权限为()。
B. protected D. static5.下面对静态数据成员的描述中,不正确的是()。
A.静态数据成员可以在类体内进行初始化√B.静态数据成员不可以在类体内进行初始化C.静态数据成员能受private控制符的作用D.静态数据成员调用前必须初始6. C++中的类有两种用法:一种是类的实例化,即生成类对象,并参与系统的运行;另一种是通过()派生了新的类。
A.复用B.继承√C.封装D.引用7. 假定AA为一个类,a为该类公有的数据成员,x为该类的一个对象,则访问x对象中数据成员a 的格式为()。
A. x(a)B. x[a]C. x->aD. √9. 对于一个类的构造函数,其函数名与类名( )。
A. 完全相同√B. 基本相同C. 不相同D. 无关系10. 一个类的构造函数通常被定义为该类的( )成员。
A. 公有√B. 保护C. 私有D. 友元11. 一个类的析构函数通常被定义为该类的( )成员。
A. 私有B. 保护C. 公有√D. 友元12. 一个类的静态数据成员所表示属性 ( )。
A. 是类的或对象的属性B. 只是对象的属性C. 只是类的属性√D. 类和友元的属性13.类的析构函数的作用是()。
面向对象程序设计习题库
面向对象程序设计习题库选择题1. 一个设计得好的面向对象系统具有( D)特征。
A 低内聚、低耦合B 高内聚、低耦合C 高内聚、高耦合D 低内聚、高耦合2. 面向对象程序设计的特点主要概括为(C)。
A 可分解性、可组合性、可分类性B 继承性、封装性、多态性C 抽象封装性、继承性、多态性D 封装性、易维护性、可扩展性、可重用性3. 关于C#程序的书写,下列不正确的说法是( D )。
A. 区分大小写B. 一行可以写多条语句C. 一条语句可写成多行D. 一个类中只能有一个Main()方法,因此多个类中可以有多个Main()方法4. 关于C#语言的基本语法,下列哪些说法正确的是( C )A. C#语言使用using 来引用需要用到的命名空间;B. 用C#编写的程序中,Main 函数是唯一允许的全局函数;C. C#语言中使用的名称严格区分大小写;D. C#中一条语句必须写在一行内;5 以下标识符中,正确的是(A )。
A._nNameB. typeofC. 6bD. x5#6.字符串连接运算符包括&和( A )。
A. +B. -C. *D. /7.拆箱是关于:( B )A、值类型到引用类型的转换B、引用类型到值类型的转换C、引用类型到引用类型的转换D、值类型到值类型的转换8.装箱是关于:( A )A、值类型到引用类型的转换B、引用类型到值类型的转换C、引用类型到引用类型的转换D、值类型到值类型的转换9.下列引用类型和值类型描述正确的是(A )。
A. 引用类型变量保存内存地址,值类型直接保存变量值B. 引用类型在变量中直接保存变量值,值类型保存内存地址C. 引用类型和值类型保存数据的方式相同D. .NET Framework不支持值类型,因为所有的类型都是引用类型了10.一个类中的静态方法的调用可以:( A )A、通过类名调用B、通过实例化的对象调用C、在主方法中直接调用D、在同一个类中的某一方法中直接调用11.以下数据类型中,属于引用类型的是:(A )A、string类型B、double类型C、int类型D、char类型12.下列类型中为值类型的是( C )A. 字符串类型B. 树组类型C. 枚举类型D. 接口类型13.decimal类型和浮点类型都可以表示小数,正确说法:( C )A. 两者没有任何区别B. 小数类型比浮点类型取值范围大C.小数类型比浮点类型精度高D. 小数类型比浮点类型精度低14. 有定义语句:int [,]a=new int[5,6]; 则下列正确的数组元素的引用是__C__。
《面向对象程序设计c》综合复习题集及答案详解
《面向对象程序设计c》综合复习题集及答案详解综合复习题集一、单选题1.C++源程序文件的缺省扩展名为(A)。
A.cppB.e某eC.objD.lik2.由C++源程序文件编译而成的目标文件的缺省扩展名为(C)。
A.cppB.e某eC.objD.lik3.由C++目标文件连接而成的可执行文件的缺省扩展名为(B)。
A.cppB.e某eC.objD.lik4.编写C++程序一般需经过的几个步骤依次是()。
A.编译、编辑、连接、调试B.编辑、编译、连接、调试C.编译、调试、编辑、连接D.编辑、调试、编辑、连接5.以下标识符中不全是保留字的是()。
A.caeforintB.defaultthenwhileC.boolclalongD.gotoreturnchar6.能作为C++程序的基本单位是()。
A.字符B.语句C.函数D.源程序文件7.程序中主函数的名字为()。
A.mainB.MAINC.MainD.任意标识符8.C++程序的基本模块为()。
A.表达式B.标识符C.语句D.函数9.可用作C++语言用户标识符的一组标识符是()。
A.voiddefine+WORDB.a3_b3_123YNC.for-abcCaeD.2aDOizeof10.存储以下数据,占用存储字节最多的是()。
A.0B.‘0’C.“0”D.0.011.程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用()符号作为分隔符。
A.空格或逗号B.逗号或回车C.逗号或分号D.空格或回车12.设”inta=12;”,则执行完语句”a+=a某a;”后,a的值是()。
A.12B.144C.156D.28813.假设在程序中a、b、c均被定义成整型,所赋的值都大于1,则下列能正确表示代数式1/abc的表达式是()。
A.1.0/a某b某cB.1/(a某b 某c)C.1/a/b/(float)cD.1.0/a/b/c14.设”inta=15,b=26;”,则”cout<A.15B.26,15C.15,26D.2615.设某是一个bool型的逻辑量,y的值为10,则表达式某&&y的值为()。
c面向对象程序设计期末考试题及答案
c面向对象程序设计期末考试题及答案一、选择题(每题2分,共20分)1. 下列哪个是面向对象程序设计的特点?A. 封装B. 继承C. 多态D. 所有选项都是2. 在Java中,以下哪个关键字用于定义类?A. classB. structC. typeD. classdef3. 以下哪个是Java中不允许的类成员访问修饰符?A. publicB. protectedC. privateD. global4. 以下哪个是Java中实现多态的方式?A. 函数重载B. 函数重写C. 接口D. 抽象类5. 在Java中,哪个关键字用于声明一个方法,该方法没有返回值?A. voidB. returnC. noneD. null6. 以下哪个是Java中创建对象的语法?A. new ClassName();B. create ClassName;C. make ClassName;D. ClassName();7. 在Java中,以下哪个是正确的构造方法声明?A. public ClassName();B. public ClassName new();C. public new ClassName();D. public ClassName create();8. 以下哪个是Java中实现继承的方式?A. 使用extends关键字B. 使用implements关键字C. 使用interface关键字D. 使用new关键字9. 在Java中,以下哪个关键字用于实现接口?A. implementsB. extendsC. interfaceD. class10. 以下哪个是Java中实现封装的方式?A. 使用public关键字B. 使用private关键字C. 使用protected关键字D. 使用default关键字答案:1. D2. A3. D4. B5. A6. A7. A8. A9. A10. B二、简答题(每题10分,共20分)1. 简述面向对象程序设计中的“封装”概念及其重要性。
面向对象程序设计C课后题答案
第一章:面向对象程序设计概述[1_1]什么是面向对象程序设计?面向对象程序设计是一种新型的程序设计范型。
这种范型的主要特征是:程序=对象+消息。
面向对象程序的基本元素是对象,面向对象程序的主要结构特点是:第一:程序一般由类的定义和类的使用两部分组成,在主程序中定义各对象并规定它们之间传递消息的规律。
第二:程序中的一切操作都是通过向对象发送消息来实现的,对象接受到消息后,启动有关方法完成相应的操作。
面向对象程序设计方法模拟人类习惯的解题方法,代表了计算机程序设计新颖的思维方式。
这种方法的提出是软件开发方法的一场革命,是目前解决软件开发面临困难的最有希望、最有前途的方法之一。
[1_2]什么是类?什么是对象?对象与类的关系是什么?在面向对象程序设计中,对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体。
对象可以认为是:数据+操作在面向对象程序设计中,类就是具有相同的数据和相同的操作的一组对象的集合,也就是说,类是对具有相同数据结构和相同操作的一类对象的描述。
类和对象之间的关系是抽象和具体的关系。
类是多个对象进行综合抽象的结果,一个对象是类的一个实例。
在面向对象程序设计中,总是先声明类,再由类生成对象。
类是建立对象的“摸板”,按照这个摸板所建立的一个个具体的对象,就是类的实际例子,通常称为实例。
[1_3]现实世界中的对象有哪些特征?请举例说明。
对象是现实世界中的一个实体,其具有以下一些特征:(1)每一个对象必须有一个名字以区别于其他对象。
(2)需要用属性来描述它的某些特性。
(3)有一组操作,每一个操作决定了对象的一种行为。
(4)对象的操作可以分为两类:一类是自身所承受的操作,一类是施加于其他对象的操作。
例如:雇员刘名是一个对象对象名:刘名对象的属性:年龄:36 生日:1966.10.1 工资:2000 部门:人事部对象的操作:吃饭开车[1_4]什么是消息?消息具有什么性质?在面向对象程序设计中,一个对象向另一个对象发出的请求被称为“消息”。
面向对象程序设计习题及答案
面向对象程序设计一、选择填空1. 关于C + +与C语言的关系描述中,(D)是错误的。
(A)C语言是C + +的一个子集 (B) C语言与C++是兼容的(C) C++对C语言进行了一些改进(D) C++和C语言都是面向对象的2. 下面关于对象概念的描述中,(B)是错误的。
(A )对象就是C语言的结构变量(B)对象代表着正在创建的系统中的一个实体(C)对象是一个状态的操作(或方法)的封装体(D)对象之间的信息传递是通过消息进行的3. 下面关于类概念的描述中,(D)是错误的。
(A )类是抽象数据类型的实现(B )类是具有共同行为的若干对象的统一描述体(C)类是创建对象的样板(D)类就是C语言的结构类型4. 按照标识符的要求,(A )符号不能组成标识符。
(A )连接符 (B)下划线 (C)大小写字母 (D)数字字符5. 下列符号中,(C)不可作为分隔符。
(A), (B) : (C)? ( D);6. 在16位机中,int型字宽为(A)字节。
(A ) 2 ( B) 4 ( C) 6 (D) 87. 类型修饰符unsigned修饰(D)类型是错误的。
(A)char ( B) int (C) long int (D) float& 对于int *pa[5];的描述,(D)是正确的。
(A)pa是一个指向数组的指针,所指向的数组是5个int型元素(B)pa是一个指向某数组中第5个元素的指针,该元素是int变量(C)pa[5]表示某个数组的第5个元素(D)pa是一个具有5个元素的指针数组,每个元素是一个int型指针。
9. 下列关于指针的运算中,(D)是非法的。
(A)两个指针在一定条件下,可以进行相等或不等的运算。
(B)可以有一个空指针赋值给某个指针。
(C)一个指针可以加上一个整数。
(D)两个指针在一定条件下,可以相加。
10. 指针可以用来表示数组元素,下列表示中( A )是错误的。
已知:int a[3][7];(A)*(a+1)[5] ( B) *(*a+3) (C) *(*(a+1)) (D) *(&a[0][0]+2)11. 下列表示引用的方法中,(A )是正确的。
面向对象程序试题6
中国计量学院《面向对象程序设计》课程考试试卷(C)一、填空题(每空1分,共20分)。
1.所有的面向对象程序设计语言,都支持三个共同的本质特征___、___、___。
2.为了解决程序中函数调用的效率问题,引入了___,定义时需在函数前面加上___说明;为了提高程序的运行效率,引入了___,定义时需在函数前面加上___说明。
3.在类的定义当中,缺省的成员是__成员。
4.请填写下列表格(填写派生类中成员的类型)。
5.利用成员函数对二元运算符进行重载时,其左操作数为___,右操作数为___。
6.设置虚基类的目的是___,可通过___标识虚基类。
7.动态联编是在___的支持下实现的,它通过___来调用该函数操作。
二、选择题(每题2分,共20分)1.下列关于类型转换的描述中,()是错误的。
A、在不同类型操作数组成的表达式中,其表达式类型一定是最高类型double型;B、逗号表达式的类型是最后一个表达式的类型;C、赋值表达式的类型是左值的类型;D、由低向高的类型转换是保值映射。
2.()不是构造函数的特征。
A、构造函数的函数名与类名相同;B、构造函数可以重载;C、构造函数可以设置缺省参数;D、构造函数必须指定类型说明3.在C++中,关于下列设置参数默认值的描述中,()是正确的。
A、不允许设置参数的默认值;B、设置参数默认值只能在定义函数时设置;C、设置参数默认值时,应该是先设置右边的,再设置左边的;D、设置参数默认值时,应该全部参数都设置4.关于new运算符的下列描述中,()是错误的。
A、它可以用来动态创建对象和对象数组;B、使用它创建的对象或对象数组可以使用运算符delete删除;C、使用它创建对象时要调用构造函数;D、使用它创建对象数组时必须指定初始值。
5.重载函数在调用时选择的依据中,()是错误的。
A、参数个数;B、参数的类型;C、函数名字;D、函数的类型6.下列描述中,()是抽象类的特性。
A、可以说明虚函数;B、可以进行构造函数重载;C、可以定义友元函数;D、不能说明其对象。
C面向对象程序设计编程题
C++面向对象程序设计-编程题C++面向对象程序设计2010期末考试编程题1、编写一个程序根据输入的三角形的三条边判断是否能组成三角形,如果可以则输出它的面积和三角形类型(等边、等腰、直角三角形)。
#include<iostream>#include<math.h>using namespace std;int main(){double a,b,c;double v,p;cout<<"请输入三角形三条边:"<<endl;cin>>a>>b>>c;if(a+b>c&&a+c>b&&b+c>a){p=(a+b+c)/2;v=sqrt(p*(p-a)*(p-b)*(p-c));cout<<"该三角形面积是"<<v<<endl;if(a==b&&a==c)cout<<"该三角形是等边三角形!"<<endl;elseif(a==b&&a!=c||a==c&&a!=b||b==c&&b!=a)cout<<"该三角形是等腰三角形!"<<endl;if((a*a+b*b==c*c)||(a*a+c*c==b*b)||(c*c+b*b==a*a))cout<<"该三角形是直角三角形!"<<endl;}elsecout<<"这三条边组不成三角形!"<<endl;return 0;}2、定义一个学生类,其中有3 个数据成员:学号、姓名、年龄,以及若干成员函数。
同时编写main 函数使用这个类,实现对学生数据的赋值和输出。
面向对象的程序设计试题库
面向对象的程序设计一、单项选择题1、下面那种结构不是C++的控制结构()A 顺序结构B 选择结构C 循环结构D 判断结构答: D2、下列是C++语言中合法标识符的是()。
A.3three B.ifC._1oneD.while答:C3、下列是合法的C++语言语句的是()。
A.if(x>0) then x=x-1;else x=x+1;B.if(x>0) x=x-1;else x=x+1;C.if x>0 x=x-1;else x=x+1;D.if x>0 x=x-1;答:B4、下面那一种不是计算机内部表示整数的方法()A 二进制码B原码C 补码D反码答:A5、在C++语言中,下列数为合法的实数的是()。
A.5E-3B.5E-3.5C. E5D.-3.5E答:A6、C++语言中数据类型最大的是()A longB floatC intD char7、如果一个函数可以在定义中直接或间接的调用自己,这样的函数称为()。
A.函数声明B.嵌套函数C.定义函数D.递归函数答:D8、表达式0x55^0xB4的结果为()。
A.0xF5B.0x15C.0xE1D.0x1E答:C9、C++中,源代码文件后缀为()A .cppB .objC .exeD .c答: A10、0X5A&0XB7结果是()A 0X13B 0X12C 0X14D 0X15答: B二、填空题1、程序的基本控制结构包括()、()和()。
答:顺序结构,选择结构,循环结构2、用来解决问题的,与有限多个步骤组成的具体过程称为()。
答:算法3、整数类型变量a和b被初始化为3和10,则循环语句while(a<=b) a=a+2;共执行()次,执行完语句后a的值为(),b的的值为()。
答:4,11,10)。
答:警告信息,致命错误5、计算机中的数据可以分为()和()两大类。
答:数值型、字符型6、字符型数据有两种编码方法:()和()答:有美国国家标准局制定的ASCII码、IBM公司提出的EBCDIC码7、通过C++ 语言中的()机制,可以从现存类中构建其子类。
面向对象程序设计试卷
面向对象程序设计试卷一、选择题(每题2分,共20分)1. 面向对象程序设计中的三大特征是:A. 封装、继承、多态B. 抽象、封装、继承C. 封装、继承、封装D. 继承、多态、封装2. 下列哪个不是面向对象程序设计的优点?A. 代码重用B. 易于维护C. 程序复杂度低D. 可扩展性好3. 在Java中,哪个关键字用于定义类?A. classB. structC. interfaceD. type4. 以下哪个是Java中不允许的类名?A. MyClassB. 2MyClassC. MyClass2D. MyClass_5. 在面向对象程序设计中,以下哪个概念不是用于实现封装?A. 私有成员B. 公有方法C. 访问控制D. 继承6. 下列哪个不是Java的访问控制修饰符?A. publicB. privateC. protectedD. global7. 以下哪个是Java中不允许的方法名?A. myMethodB. _myMethodC. my_methodD. myMethod_8. 在Java中,哪个关键字用于实现继承?A. extendsB. inheritC. deriveD. base9. 以下哪个不是Java的多态性实现方式?A. 接口B. 抽象类C. 重载D. 重写10. 在Java中,哪个关键字用于定义接口?A. interfaceB. protocolC. abstractD. type二、简答题(每题10分,共30分)1. 简述面向对象程序设计中封装的概念,并给出一个封装的简单示例。
2. 解释什么是多态性,并说明多态性在面向对象程序设计中的重要性。
3. 描述继承在面向对象程序设计中的作用,并举例说明如何使用继承来提高代码的复用性。
三、编程题(每题25分,共50分)1. 定义一个名为`Student`的类,包含以下属性:- 姓名(String类型)- 学号(String类型)- 年龄(int类型)并为该类实现以下方法:- 一个构造函数,用于初始化姓名、学号和年龄。
c面向对象程序设计期末考试题及完整参考答案
3.distanee/400.0改为distanee/400或者distanee/400.0f;
4.public float ISwimmable.Run(float distanee)改为float ISwimmable.Run(float distanee)
7.类索引函数的参数类型必须为或。
8.类对接口方法的实现时,在方法名称之前加上接口名,这叫做对接口方法的实现,此时这个方法是这个
类的员,不能通过类的实例来访问。
9.作为一种特殊的函数成员,重载类的操作符时,被重载的操作符必须被声明为公有的和,并通过在关键
字operator后跟操作符来声明。
二、判断题(每小题1分,共5分)
public virtual float Run( float dista nce)
{
retur n dista nce/Speed;
}
public Automobile(float speed)
{
Speed = speed;
}
}
public class Amphicar:Automobile, ISwimmable
Console.WriteLine("{0}空中飞行1000公里需{1}小时", plane, plane.Run(1000)); //调用IFlyable接口Run方法
Con sole.ReadL in e();
}
}
public in terface IFIyable
{
public float Run( float dista nee);
C面向对象程序设计试卷.doc
一、单项选择题(出题人:刘敏,尹仁青)1.关键字—c_—说明对象或变量初始化后不会被修改。
A.s taticB. public C・const D. inline2.如果调用带有默认参数的函数时缺少一个参数,则—参数就作为这一个参数。
A.笫一个B•最后一个C•中间一个D•以上都不是3.静态数据成员的生存期_A—oA.与整个程序相同B.不长与类的生存期C.取决于创建的对象数D.以上都不是4•设置虚基类的目的是: B OA.简化程序B.消除二义性C.提高运算效率D.减少目标代码5.下列语句中,将函数int sum(int x, int y)正确重载的是___ C ____A.fl oat sum(int x, int, y)B.int sum(int a, int b)C.f 1 oat sum(float x, float y)D.double sum(int y, int x)6•已知X类,则当程序执行到语^1: X array [3];时,调用了—D—次构造函数。
A.0B. 1C. 2D. 37•如果表达式++i*k中的“++”和都是重载的友元运算符,若采用运算符函数调用格式,则表达式还可以表示为BA.operator * (i. operator++ (), k)B.operator*(i・ oper3tor++(i), k)C・ i・ opcrator++()・ operator*(k)D.k.opreator*(operator++(i))8•下面对模板的声明,正确的是—C—A.temlate<T>B.template<class Tl, T2>C・ tcmplatc<class Tl,class T2>D. template<class T1;class T2>9.考虑下面的函数原型声明:void testDefaulParam (int a, int b=7, char z二'*');下面函数调用中,不合法的是____ C ____A.testDefaulParam(5)B.testDefaulParam(5, 8)C.testDefaulParam(5, ' #')D.testDefaulParam(0, 0, ? *')10.类定义的内容允许被其他对象无限制的存取的是—C _______A.private 部分B.protected 部分C.public 部分D.以上都不对11・_B_不是属于面向程序设计的特性A.抽象性B.数据相关性C.多态性D.继承性12•将对某一类数据的处理算法应用到另一类数据的处理中,要用到C++的 DA.类B.虚函数C.运算符重载D.模板13.C++与C语言最根本的不同之处在于—A_A.使用了类B.能够实现变量自动初始化C.支持软件重用D.支持接口重用14.动态内存分配的主要目的是A・使程序按动态链编方式运行 B.正确合理的使用内存C.提高程序的运行速度D.提高程序的可维护性15.在C++函数的形参前加const关键字,是为了提高函数的_C—A.数据封装性B.可理解性C.可维护性D.可重用性16•函数重载的目的是B_A.实现共享B.使用方便,提高可读性C.提高速度D.减少空间17•从程序片段:char name[] = ” C++” ; course (name);可判断函数course的调用采用的是—D_A.传值调用B.带缺省参数值的函数调用C.引用调用D.传址调用18.用来说明类中公有成员的关键字是_A_A.publicB. privateC.protectedD.friend 19•如果一个类的成员函数print ()不修改类的数据成员值,则应将其声明为AA. v oid pri nt() con st;B. const void print ()C. void const print ()D. void print (const)20•在程序代码:A::A(int a, int *b) {this->x=a; this -〉y 二b;} 中,this 的类型是_C_A. intB. int *C. AD. A *二、程序改错(出题人:张晨)#inelude <iostrcam> using namespace std;void swap(int &a, (1) int 6){ int t; t=a; a=b; b 二t;}void max (int a, int b, (2)int t, (3)int maxnum,int &minnum)if ((4) a<=t) if ((5)a<=t)) if (b 〈二 c) (7) maxnum=b ;Iint main()int a, b, c, maxnum, minnum; swap (a, b);swap (a, c);(6) swap (b, t)mirm um 二c;cout<<〃input a, b,c:〃;cin>>a>>b>>c;(8)min (a, b, c, maxnum, minnum);cout<<z'(9)a= <<maxnuHi〈〈endl;cout<<z,(7zZ?c-,,<<minnum<<cndl;return 0;答案:(Dint&b (2)int c(3)int &maxnum(4) (a<=b) (5) (a〈二c)(6) swap (b, c)(7)maxnum=a(8)max(9)maxnum(10)minnum三、阅读下面程序,写出其结果。
c面向对象程序的设计试题和答案经典题目
一、填空题(每空1分,共14分)1、观看以下程序:class point{public:void show() {cout<<”point”<<endl;}};void main(){point p1;point *p;p=&p1;______p1.show()_________//通过对象p1访问show函数_______p.show()_______//通过指针p访问show函数}2、在C++类中可以包含___公共___、___保护_____和___私有__三种具有不同访问控制权的成员。
3、定义类时,在类头中将使用关键字__class _____来表示类定义的开始。
4、如果一个类中至少有一个纯虚函数,则该类称为_______抽象类_________。
5、C++类的组成包括数据成员和______成员函数________,友元__是___(是、不是)该类的成员函数。
6、友员函数是用关键字_____friend_______修饰的非成员函数。
7、若有:int i;int &j=i;i=10;j=i+1;则i=____11_____,j=___11______。
8、new的功能是_______分配内存空间______,delete的功能是______释放内存空间______________。
二、选择题(每小题1.5分,共30分)1、下列特性中不是面向对象程序设计语言所特有的是(D)。
(A)数据封装(B)继承(C)多态性(D)模板2、( B )是给变量取一个别名,它引入了变量的同意词。
(A)指针(B)引用(C)枚举(D)结构3、类成员的访问权限中,()只能被本类的成员函数和其友元函数访问。
(A)share (B)public (C)private (D)protected4、关于构造函数,下列说法不正确的是()。
(A)构造函数名字和类名相同(B)构造函数在创建对象时自动执行(C)构造函数无任何函数返回类型(D)构造函数有且只有一个5、派生类可以访问其基类的()。
面向对象程序设计试题及答案
面向对象程序设计试题及答案一、试题1. 请简要解释面向对象(Object-Oriented)程序设计的概念。
2. 列举面向对象程序设计中的四个基本特征,并分别进行简要描述。
3. 请说明封装(Encapsulation)在面向对象程序设计中的作用和优势。
4. 解释继承(Inheritance)在面向对象程序设计中的概念和用途。
5. 什么是多态(Polymorphism)?请解释多态的概念以及其在面向对象程序设计中的重要性。
6. 简要介绍抽象类(Abstract Class)和接口(Interface)的概念,并说明它们之间的区别。
7. 请解释类(Class)与对象(Object)之间的关系。
8. 在面向对象程序设计中,什么是构造函数(Constructor)?请说明构造函数的作用和使用方法。
9. 请示范一个使用面向对象程序设计的简单实例,并说明你所设计的类的结构和功能。
二、答案1. 面向对象程序设计是一种以对象为中心的编程方法,通过定义表示对象属性和行为的类来组织程序结构,以实现代码的重用性、灵活性和可维护性。
2. (1)封装:将数据和对数据的操作封装在一个类中,通过访问权限控制,保护数据的安全性和完整性。
(2)继承:通过建立类之间的继承关系,实现代码的重用,具有层次性和扩展性。
(3)多态:允许不同类的对象对同一消息作出不同的响应,实现代码的灵活性和扩展性。
(4)抽象:通过抽象类和接口的定义,隐藏对象的具体实现细节,提供统一的接口和规范。
3. 封装的作用是将数据和对数据的操作封装在一个类中,外部无法直接访问类的内部实现细节,只能通过类提供的接口访问和操作数据。
封装的优势包括:(1)提高代码的可维护性和可读性,减少代码的重复。
(2)保护数据的安全性和完整性,防止外部直接对数据进行非法操作。
(3)降低模块之间的耦合度,提高代码的灵活性。
4. 继承是面向对象程序设计中的一个重要概念,它通过建立类与类之间的继承关系,实现代码的重用和扩展。
面向对象程序设计复习试题(答案)
语法扩充选择题在C++中用( D )能够实现将参数值带回。
a)数组 b)指针 c)引用 d)上述ABC都可考虑函数原型void test(int a,int b=7,char *ch="*"),下面的函数调用中,属于不合法调用的是:( C )A)test(5) B)test(5,8) C)test(6,"#")D)test(0,0,"*");已知: int m=10;下列表示引用的方法中,正确的是:( C )A)int &Z; B)int &t=10; C)int &X=m; D)float &f=&m;下列不是函数重载所要求的条件是:( D )A)函数名相同 B)参数个数不同C)参数类型不同 D)函数返回值类型不同在C++中执行以下4条语句后输出rad值为:( C )static int hot=200;int &rad=hot;hot=hot+100;cout<<rad<<endl;A) 0 B) 100 C) 300 D) 200系统在调用重载函数时,不能作为确定哪个重载函数被调用的依据是:( D )A)参数个数 B)参数类型 C)函数名称 D)函数的返回值类型对C++语言和C语言的兼容性,描述正确的是:( A )A)C++兼容C B)C++部分兼容C C)C++不兼容C D)C兼容C++在C++中使用流进行输入输出,其中用于屏幕输出的对象是:( C )A)cerr B)cin C)cout D)cfile对使用关键字new所开辟的动态存储空间,释放时必须使用( C )A)free B)create C)delete D)realse在函数调用时,如某一默认参数要指明一个特定值,则有( A )A)其之前所有参数都必须赋值 B)其之后所有参数都必须赋值C)其前、后所有参数都必须赋值 D)其前、后所有参数都不必赋值下列哪个类型函数不适合声明为内联函数( A )A)函数体语句较多 B)函数体语句较少C)函数执行时间较短 D)函数执行时间过长int Func(int,int);不可与下列哪个函数构成重载( B )A)int Func(int,int,int); B)double Func(int,int);C)double Func(double,double); D)double Func(int,double);下面的哪个保留字不能作为函数的返回类型( C )A)void B)int C)new D)long一个函数功能不太复杂,但要求被频繁调用,选用( A )。
(完整word版)《面向对象程序设计C》期末考试试卷
《面向对象程序设计C++》期末考试试卷一、选择题(每小题3分,共48分.)01、下列关于C++函数的叙述中,正确的是( C )。
A)每个函数至少要具有一个参数B)每个函数都必须返回一个值C)函数在被调用之前必须先声明D)函数不能自己调用自己02、下列关于类和对象的叙述中,错误的是( A )。
A)一个类只能有一个对象B)对象是类的具体实例C)类是对某一类对象的抽象D)类和对象的关系是一种数据类型与变量的关系03、在C++中,用于实现运行时多态性的是( D )。
A)内联函数B)重载函数C)模板函数D)虚函数04、下列关于运算符重载的叙述中,正确的是( B ).A)通过运算符重载,可以定义新的运算符B)有的运算符只能作为成员函数重载C)若重载运算符+,则相应的运算符函数名是+ D)重载二元运算符时,必须声明两个形参05、对于语句cout〈〈x<<endl;错误的是描述是( D ).A)“cout”是一个输出流对象B)“endl”的作用是输出回车换行C)“x”是一个变量D)“〈<”称作提取运算符06、有如下类声明,则类MyDERIVED中保护的数据成员和成员函数的个数是()。
class MyBASE{ private: int k;public: void set(int n){ k=n;}int get()const{ return k;} };class MyDERIVED: protected MyBASE{protected: int j;public:void set(int m, int n){ MyBASE::set(m); j=n;}int get( )const { return MyBASE::get()+j;} };A)4 B)3 C)2 D)107、已知在一个类体中包含如下函数原型:Volume operator-(Volume)const;,下列关于这个函数的叙述中,错误的是( )。
面向对象程序设计题库(C++)
一、单项选择题之阿布丰王创作1. 在C++语言中,对函数参数默认值描述正确的是:( D )A) 函数参数的默认值只能设定一个B) 一个函数的参数若有多个,则参数默认值的设定可以不连续C) 函数参数必需设定默认值D) 在设定了参数的默认值后,该参数后面界说的所有参数都必需设定默认值2. 假定 AB 为一个类,则执行 AB x ;语句时将自动调用该类的( B ) . A) 有参构造函数 B) 无参构造函数 C) 拷贝构造函数 D) 赋值构造函数3. 下述关于开关语句的描述中,()是正确的.A) 开关语句中default子句可以没有,也可以有一个;B) 开关语句中每个语句序列中必需有break语句;C) 开关语句中default子句只能放在最后;D) 开关语句中case子句后面的表达式可以是整形表达式.4. 关于对象概念的描述中,()是毛病的.A) 对象就是C语言中的结构变量;B) 对象代表着正在创立的系统中的一个实体;C) 对象是一个状态和把持(或方法)的封装体;D) 对象之间的信息传递是通过消息进行的;5. 下列给字符数组进行初始化中,()是正确的.A) char s1[ ]="12345abcd"; B) char s2[3]="xyz";C)char s3[][3]={ 'a', 'x', 'y'};D) char s4[2[3]={"xyz","mnp"};6. 在int a[][3]={{1},{3,2},{4,5,6},{0}}中,a[2][2]的值是().A) 3 B)2 C)6D) 47. 声明类test的拷贝构造函数的正确形式是( D ) .A) int test B) void test C) test(void) D) test(test&)8. 关于new运算符的下列描述中,()是错的.A) 它可以用来静态创立对象和对象数组;B) 使用它创立的对象或对象数组可以使用运算符delete删除;C) 使用它创立对象时要调用构造函数;D) 使用它创立对象数组时必需指定初始值.9. 在 C++ 中有以下 4 条语句:static int hot=200;int&rad=hot; hot=hot+100;cout<<rad<<endl; 执行这 4 条语句后输出为:() . A) 0 B) 100 C) 300 D) 20010. 下列关于构造函数的描述中,毛病的是( B ) .A) 构造函数可以设置默认参数;B) 构造函数在声明对象时自动执行;C) 构造函数可以对静态数据成员进行初始化;D) 构造函数可以重载;11. 下面关于重载函数的说明中正确的是( ).A) 重载函数必需具有分歧的返回类型.B) 重载函数形参的个数必需分歧C) 重载函数必需具有分歧的形式参数表D) 重载函数名可以分歧12. 下列关于C++函数的说明中,正确的是( ).A) 内联函数就是界说在另一个函数体内部的函数B) 函数体的最后一条语句必需是 return 语句C) C++要求在调用一个函数前必需先声明其原型D) 编译器会根据函数的返回值类型和参数表来区分函数的分歧重载形式13. 已知函数原型为:void foo(int*, long &b);实参界说为:int i;long f;则正确的调用语句是( ).A) foo(i, &f); B) foo(i, f); C) foo(&i, f);D) foo(&i, &f);14. C++中对结构中界说的成员,其默认的访问权限为( ).A) public B) protected C) private D) static15. 下列关于类与对象的说法中,不正确的是( ).A) 对象是类的一个实例B) 任何对象只能属于一个具体的类C) 一个类只能有一个对象D) 类与对象的关系和数据类型与变量的关系相似16. 下列关于构造函数的描述中毛病的是( )A) 构造函数可以设置默认参数 B) 构造函数在界说类对象时自动执行C) 构造函数可以对静态数据成员进行初始化 D) 构造函数不成以重载17. 类的析构函数的作用是( ).A) 作为类的一般成员函数 B) 类的初始化 C) 对象的初始化 D) 对象的删除18. 以下关于静态数据成员的描述正确的是( ).A) 静态数据成员可以在类体中进行初始化 B) 静态数据成员不成以被类的实例调用C) 静态数据成员不能受protected控制符的作用 D) 静态数据成员可以直接用类名调用19. 下面关于友元函数的描述中正确的是( ).A) 友元函数的实现必需在类的内部界说 B) 友元函数是类的成员函数C) 友元函数破坏了类的封装性和隐藏性 C) 友元函数不能访问类的私有成员20. 下面关于友元函数的描述中毛病的是( ).A) 如果类A是类B的友元,那么类B也是类A的友元B) 如果函数fun()被说明为类A的友元,那么在fun()中可以访问类A的私有成员C) 友元关系不能被继承D) 如果类A是类B的友元,那么类A的所有成员函数都是类B的友元函数21. 下列属于C++语句的是 .A) ; B) a=17 C) a+5 D) cout<<’\n’22. 执行语句k=30;j=k++;后k和j的值分别为 .A) k=30,j=30 B) k=30,j=31C) k=31,j=30 D) k=31,j=3123. 若X是一个bool型变量,则X&&5<3的值 .A) 为true B) 为falseC) 与X的值相同D) 与X的值相反24. 如果a=1,b=2,c=3,d=4,则条件表达式“a>b?a:c<d?c:d ” 的值为 .A) 3 B) 2 C)1 D) 425. 执行下列语句后的输出结果是 .int hot=100;int &rad=hot;hot+=100;cout<<rad<<endl;A) 0 B) 100C) 200 D) 30026. 下列关于break语句的叙述不正确的是 .A) break语句可用于循环体中,它将使执行流程跳出本层循环体;break语句可用于switch语句中,它将使执行流程跳出以后的switch语句;break语句可用于if语句中,它将使执行流程跳出以后if语句;break语句在一层循环体中可以呈现屡次.27. 下面关于类的对象性质的描述,正确的是 .A)对象之间不成以相互赋值 B)不成以说明指向对象的指针C)对象不能用作数组元素 D)一个对象能用作另一个对象的成员28. 在 C++ 中实现封装是借助于 .A) 枚举B) 类C) 数组D) 函数29. 下列不是描述类的成员函数的是 .A) 构造函数 B) 析构函数C) 友元函数 D) 拷贝构造函数30. 不能作为函数重载判断依据的是 .A) 参数个数 B) 参数类型C) 函数名称 D)返回值类型31. 假定一个类的构造函数为A(int aa,int bb){a=aa++;b=a*bb++;} ,则执行 A X(4,5); 语句后, X.a 和X.b 的值分别为 . A) 4 和 5 B) 5 和30C) 4 和20 D) 20 和 532. 对double(*p)[10];的描述, 是正确的.A) p是一个指向数组的指针,所指向的数组是10个double型元素;B) p是一个指向某个数组中第10个元素的指针,该元素是double型变量;C) p[5]暗示某个数组的第10个元素的值;D) p是一个具有10个元素的指针数组,每个元素是一个double 型指针;33. 下面的函数声明中, 哪一个是”void BC(int a, intb);”的重载函数?A) int BC(int a, int b) B)void BC(int a, char b)C) float BC(int a, int b, int c = 0) D) void BC(int a, int b=0)34. 已知char c; char * const pc="asdf", 是正确的.A) pc="dfgh" B) *pc=‘b’C) *pc++=‘y’D) pc=&c35. 下列关于构造函数的叙述,毛病的是 .A)构造函数可以设置默认参数;B)构造函数在说明类变量时自动调用;C)构造函数可以对静态数据成员进行初始化;D)构造函数可以重载;36. 下列关于构造函数的描述中毛病的是( )A) 构造函数可以设置默认参数 B) 构造函数在界说类对象时自动执行C) 构造函数可以对静态数据成员进行初始化 D) 构造函数不成以重载37. 类的析构函数的作用是( ).A) 作为类的一般成员函数 B) 类的初始化 C) 对象的初始化 D) 对象的删除38. 以下关于静态数据成员的描述正确的是( ).A) 静态数据成员可以在类体中进行初始化 B) 静态数据成员不成以被类的实例调用C) 静态数据成员不能受protected控制符的作用 D) 静态数据成员可以直接用类名调用39. 下面关于友元函数的描述中正确的是( ).A) 友元函数的实现必需在类的内部界说 B) 友元函数是类的成员函数C) 友元函数破坏了类的封装性和隐藏性 C) 友元函数不能访问类的私有成员40. 下面关于友元函数的描述中毛病的是( ).A) 如果类A是类B的友元,那么类B也是类A的友元B) 如果函数fun()被说明为类A的友元,那么在fun()中可以访问类A的私有成员C) 友元关系不能被继承D) 如果类A是类B的友元,那么类A的所有成员函数都是类B的友元函数41. 重载函数在调用时选择的依据中,毛病的是 ( )A. 函数的参数B. 参数的类型C. 函数的名字D. 函数的类型42. 一个函数功能不太复杂,但要求被频繁调用,选用( . )A. 内联函数B. 重载函数C. 递归函数D. 嵌套函数43. 下列不是描述类的成员函数的是 ( )A. 构造函数B. 析构函数C. 友元函数D. 拷贝构造函数44. 构造函数不具备的特征的是 ( )A. 构造函数的函数名与类名相同B. 构造函数可以重载C. 构造函数可以设置默认参数D. 构造函数可以指定返回类型45. 通常,拷贝构造函数的参数是 ( )A. 某个对象名B. 某个对象的成员名C. 某个对象的引用名D. 某个对象的指针名46. 继承机制的作用是 ( )A. 信息隐藏B. 数据封装C. 代码重用D. 数据笼统47. 类的析构函数的作用是 ( )A.一般成员函数B.类的初始化C.对象的初始化D.删除对象创立的所有对象48. 类的析构函数是在 ( ) 调用的.A. 类创立时B. 创立对象时C. 删除对象时D. 不自动调用49. 已知print ()函数是一个类无返回值的常成员函数,下列暗示中正确的是( ).A.void print()constB.const void print()C.void const print ;D.void print (const );50. 如果类 A 被说明成类 B 的友元,则 ( )A. 类 A 的成员即类 B 的成员B. 类 B 的成员即类 A 的成员C. 类 A 的成员函数不得访问类 B 的成员D. 类 B 纷歧定是类 A 的友元51. 通过一个对象调用虚函数时,C++系统对该调用采纳( ).A.静态联编B.静态联编C.不确定是哪种联编 D.函数重载52. 在公有继承的情况下,基类成员在派生类中的访问权限( )A. 受限制B. 坚持不变C. 受呵护D. 不受呵护53. 在C++中,当一个对象被创立后,它的每一个成员函数都含有一个系统自动生成的隐含的指针,称之为( )指针.A.对象B.派生C基类D.this54. 假定 AB 为一个类,则执行 AB x ;语句时将自动调用该类的( )A. 有参构造函数B. 无参构造函数C. 拷贝构造函数D. 赋值构造函数55. C++ 语言建立类族是通过 ( )A. 类的嵌套B. 类的继承C. 虚函数D. 笼统类二、判断题1、C++中,数组下标从1开始.( 错 )2、C++允许对字符串进行整体把持.( )3、break语句也可以用于if体内,它可退出if语句.()4、在说明语句 char a(‘A’),&b=a,*pa=&a;中,b的值与*pa的值相等.( )5、对象数组的元素可以是分歧类的对象.()6、私有继承中,基类中所有成员对派生类的对象都是不偏见的.()7、类中所提供的成员函数可以直接访问私有成员.()8、依照标识符的要求,下划线是不能组成正确标识符的.()9、函数的默认参数没有顺序要求,可以随意界说.()10、在 C++ 语言中,”A”占两个字节,而’A’占一个字节.()11、C++语言支持封装性和继承性,不支持多态性.[ 错 ]12、关系运算符可以用来比力两个字符的年夜小,也可用来比力两个字符串的年夜小.)[ ]13、字符串"sdfgh"的长度是5.[ ]14、引用和指针都可作函数参数.[ ]15、友元函数说明在类体内,它是一种成员函数.[ ]16、友元类必需被说明为公有成员.[ ]17、纯虚函数是在基类中说明的虚函数,它在该基类中没有界说具体的把持内容.[ ]18、析构函数不能被继承.[ ]19、运算符重载以后,其优先级和结合性都不能改变.[ ]20、在C++中,函数名实际上是一个指针,它指向函数的入口.[ ]21、构造函数可以被继承.( )22、析构函数不能被继承.( )23、多继领情况下,派生类的构造函数的执行顺序取决于界说派生时所指定的各基类的顺序.( )24、解决多继领情况下呈现的二义性的方法之一是使用成员名限定法.( )25、函数的参数个数和类型都相同,只是返回值分歧,这不是重载函数.( )26、大都运算符可以重载,个别运算符不能重载,运算符重载是通过函数界说实现的.( )27、对每个可重载的运算符来讲,它既可以重载为友元函数,又可以重载为成员函数,还可以重载为非成员函数.( )28、对单目运算符重载为友元函数时,说明一个形参;重载为成员函数时,不能显式说明形参.( )29、重载运算符坚持原运算符的优先级和结合性不变.( )30、构造函数说明为纯虚函数是没有意义的.( )三、简答题1. 简述C++的异常处置机制?2.C++的预界说的流对象有哪些?3. 试以客观世界为例,说明笼统、封装、继承性和多态性等概念.4. 多继承的情况下为什么会发生二义性?如何消除二义性?5. 试说明 void F(const T &t); 和 inf f() const; 中关键字const 作用.6.有如下法式#include <iostream>#include <fstream>using namespace std;class B;class A{friend B;public:A(){cout<<"in A()"<<endl;}A(const A &a){cout<<"in A(const A &a)<<endl;}~A(){cout<<"In ~A()"<<endl;}};class B: public A{public:B(){cout<<"In B()"<<endl;}B(const A a){cout<<"In B(const A a)"<<endl;}};void f(A &a){cout<<"In f(A &a)"<<endl;}void ff(const B &b){cout<<"In ff(B &b)"<<end;}void ff(A a){}int main(){A a;B bb=a;}法式运行的结果是_________________________7.有如下法式#include <iostream>using namespace std;template <class Type>class HisClass{Type data;public:HisClass(Type a, Type b, Type c);Type getData();};template <class Type>HisClass<Type>::HisClass(Type a, Type b, Type c){if(a>b&&a>c)data=a;elseif(b>c)data=b;elsedata=c;}template <class Type>Type HisClass<Type>::getData(){return data;}int main(){HisClass<int> x1(3,4,5), x2(5,3,4),x3(4,5,3), x4(7,8,9),x5(8,7,9);cout<<x1.getData()<<x2.getData()<<x3.getData()<<x4.getData()<<x5.getData()<<endl;system("pause");return 0;}法式运行的结果是_________________________8. 以下法式在运行中呈现致命毛病,找犯毛病原因并修正.#include<iostream>#include<cstring>class sample{private:char *string;public:sample(const char *s){string = new char[strlen(s)+1];strcpy(string s);}~sample(){delete string;};};sample f(char *arg){sample tmp(arg);return tmp;}int main(){sample local=f("abcd");return 0;}9.有如下法式#include<iostream>using namespace std;class P{char *name;int age;char *add;public:P(){cout<<"P";}~P(){cout<<"!P";}};class S:public P{char *department;int level;public:S(){cout<<"S";}~S(){cout<<"!S";}};class T: public P{char *major;float s;public:T(){cout<<"T";}~T(){cout<<"!T";}};int main(){S s;T t;system("pause");return 0;}法式运行的结果是_________________________ 10.有如下法式#include <iostream>using namespace std;class B {public:B( ) {cout << "B::B( )" << endl; num++; }virtual void f( ) = 0;virtual void g( ) = 0;void k( ){f( );cout << "B::k( )" << endl; g( ); }virtual ~B( ){cout << "B::~B( )" << endl;num--;}static int getNum( ){return num;}private:static int num;};class D1: public B {public:D1( ) {cout << "D1::D1( )" << endl;}void f( ) {cout << "D1::f( )" << endl;}void g( ){cout << "D1::g( )" << endl;}~D1( ) {cout << "D1::~D1( )" << endl;}};class D2: public B {public:D2( ) {cout << "D2::D2( )" << endl;}void f( ){cout << "D2::f( )" << endl;}void g( ){cout << "D2::g( )" << endl;}~D2( ){cout << "D2::~D2( )" << endl;}};int B::num = 0;int main( ){B* buf[3];buf[0] = new D1;buf[1] = new D2;buf[2] = new D1;int i;cout << B::getNum( ) << endl;for ( i = 0; i<3; i++)buf[i]->k( );for (i = 0; i<3; i++)delete buf[i];cout << B::getNum( ) << endl;system("pause");return 0;}法式运行的结果是_________________________ 11.有如下法式#include <iostream>using namespace std;class Rpublic:R(int r1, int r2): R1(r1), R2(r2){};void print();void print() const;private:int R1, R2;};void R::print(){cout<<R1<<","<<R2<<endl;};void R::print()const{cout<<R1<<","<<R2<<endl;}int main(){R a(5,4);const R b(20,52);b.print();system("pause");return 1;}法式运行的结果是_________________________12.有如下法式#include <iostream>using namespace std;class demo{public:static int constructor, copy_constructor;demo(){cout<<"default constructor"<<endl;constructor++;}demo(const demo& x){cout<<"copy constructor"<<endl;copy_constructor++;}int demo::constructor=0;int demo::copy_constructor=0;demo usercode(demo b){demo c(b);return c;}int main(){demo a, d;cout<<"calling usercode"<<endl;d=usercode(a);cout<<demo::constructor<<","<<demo::copy_constructor<<endl;system("pause");return 0;}法式运行的结果是_________________________13.有如下法式#include<iostream>using namespace std;class A{static int m;int n;。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
41. 重载函数在调用时选择的依据中,错误的是 (
)
A. 函数的参数
B. 参数的类型
C. 函数的名字
D. 函数的类型
42. 一个函数功能不太复杂,但要求被频繁调用,选用 (
.)
A. 内联函数
B. 重载函数
C. 递归函数
D. 嵌套函数
43. 下列不是描述类的成员函数的是 (
)
A. 构造函数
B. 析构函数
一、单项选择题
1. 在 C++语言中,对函数参数默认值描述正确的是:( D )
A) 函数参数的默认值只能设定一个
B) 一个函数的参数若有多个,则参数默认值的设定可以不连续
C) 函数参数必须设定默认值
D) 在设定了参数的默认值后,该参数后面定义的所有参数都必须设定默认值
2. 假定 AB 为一个类,则执行 AB x ;语句时将自动调用该类的( B ) 。
实参定义为: int i; long f;
则正确的调用语句是( ). A) foo(i, &f); B) foo(i, f); C) foo(&i, f); D) foo(&i, &f); 14. C++中对于结构中定义的成员,其默认的访问权限为( )。 A) public B) protected C) private D) static 15. 下列关于类与对象的说法中,不正确的是( )。 A) 对象是类的一个实例 B) 任何对象只能属于一个具体的类 C) 一个类只能有一个对象 D) 类与对象的关系和数据类型与变量的关系相似 16. 下列关于构造函数的描述中错误的是( ) A) 构造函数可以设置默认参数 B) 构造函数在定义类对象时自动执行 C) 构造函数可以对静态数据成员进行初始化 D) 构造函数不可以重载 17. 类的析构函数的作用是( )。 A) 作为类的一般成员函数 B) 类的初始化 C) 对象的初始化 D) 对象的删除 18. 以下关于静态数据成员的描述正确的是( )。
。
A) 枚举
B) 类
C) 数组
D) 函数
29. 下列不是描述类的成员函数的是
。
A) 构造函数
B) 析构函数
C) 友元函数
D) 拷贝构造函数
30. 不能作为函数重载判断依据的是
。
A) 参数个数
B) 参数类型
C) 函数名称
D)返回值类型
31. 假定一个类的构造函数为 A(int aa,int bb){a=aa++;b=a*bb++;} ,则执行
4. 关于对象概念的描述中,( ) 是错误的。
A) 对象就是 C 语言中的结构变量;
B) 对象代表着正在创建的系统中的一个实体;
C) 对象是一个状态和操作(或方法)的封装体;
D) 对象之间的信息传递是通过消息进行的;
5. 下列给字符数组进行初始化中,( )是正确的。
A) char s1[ ]="12345abcd";
40. 下面关于友元函数的描述中错误的是( )。
A) 如果类 A 是类 B 的友元,那么类 B 也是类 A 的友元
B) 如果函数 fun()被说明为类 A 的友元,那么在 fun()中可以访问类 A 的私有成员
C) 友元关系不能被继承
D) 如果类 A 是类 B 的友元,那么类 A 的所有成员函数都是类 B 的友元函数
A) 静态数据成员可以在类体中进行初始化 B) 静态数据成员不可以被类的实例调用 C) 静态数据成员不能受 protected 控制符的作用 D) 静态数据成员可以直接用类名调用 19. 下面关于友元函数的描述中正确的是( )。 A) 友元函数的实现必须在类的内部定义 B) 友元函数是类的成员函数 C) 友元函数破坏了类的封装性和隐藏性 C) 友元函数不能访问类的私有成员 20. 下面关于友元函数的描述中错误的是( )。 A) 如果类 A 是类 B 的友元,那么类 B 也是类 A 的友元 B) 如果函数 fun()被说明为类 A 的友元,那么在 fun()中可以访问类 A 的私有成员 C) 友元关系不能被继承 D) 如果类 A 是类 B 的友元,那么类 A 的所有成员函数都是类 B 的友元函数
)
A. 类 A 的成员即类 B 的成员 B. 类 B 的成员即类 A 的成员
C. 类 A 的成员函数不得访问类 B 的成员 D. 类 B 不一定是类 A 的友元
51. 通过一个对象调用虚函数时,C++系统对该调用采用(
)。
A.动态联编
B.静态联编
C.不确定是哪种联编 D.函数重载
52. 在公有继承的情况下,基类成员在派生类中的访问权限 (
A) 静态数据成员可以在类体中进行初始化 B) 静态数据成员不可以被类的实例调用
C) 静态数据成员不能受 protected 控制符的作用 D) 静态数据成员可以直接用类名调用
39. 下面关于友元函数的描述中正确的是( )。
A) 友元函数的实现必须在类的内部定义 B) 友元函数是类的成员函数
C) 友元函数破坏了类的封装性和隐藏性 C) 友元函数不能访问类的私有成员
D) 4
7. 声明类 test 的拷贝构造函数的正确形式是 ( D ) 。
A) int test B) void test C) test(void) D) test(test&)
8. 关于 new 运算符的下列描述中,( ) 是错的。
A) 它可以用来动态创建对象和对象数组;
B) 使用它创建的对象或对象数组可以使用运算符 delete 删除;
hot+=100;
cout<<rad<<endl;
A) 0
B) 100
C) 200
D) 300
26. 下列关于 break 语句的叙述不正确的是
。
A) break 语句可用于循环体中,它将使执行流程跳出本层循环体;
break 语句可用于 switch 语句中,它将使执行流程跳出当前的 switch 语句;
C) 300
D) 200
10. 下列关于构造函数的描述中,错误的是 ( B ) 。
A) 构造函数可以设置默认参数;
B) 构造函数在声明对象时自动执行;
C) 构造函数可以对静态数据成员进行初始化;
D) 构造函数可以重载;
第 1 页 共 25 页
11. 下面关于重载函数的说明中正确的是( )。 A) 重载函数必须具有不同的返回类型。 B) 重载函数形参的个数必须不同 C) 重载函数必须具有不同的形式参数表 D) 重载函数名可以不同
B) char s2[3]="xyz";
C) char s3[][3]={ 'a', 'x', 'y'};
D) char s4[2[3]={"xyz","mnp"};
6. 在 int a[][3]={{1},{3,2},{4,5,6},{0}}中,a[2][2]的值是 (
)。
A) 3
B) 2
C) 6
第 2 页 共 25 页
21. 下列属于 C++语句的是
。
A) ;
B) a=17
C) a+5
D) cout<<’\n’
22. 执行语句 k=30;j=k++;后 k 和 j 的值分别为
。
A) k=30,j=30
B) k=30,j=31
C) k=31,j=30
D) k=31,j=31
23. 若 X 是一个 bool 型变量,则 X && 5<3 的值
A) 构造函数可以设置默认参数 B) 构造函数在定义类对象时自动执行
C) 构造函数可以对静态数据成员进行( )。
A) 作为类的一般成员函数 B) 类的初始化 C) 对象的初始化 D) 对象的删除
38. 以下关于静态数据成员的描述正确的是( )。
C. 友元函数
D. 拷贝构造函数
44. 构造函数不具备的特征的是 (
)
A. 构造函数的函数名与类名相同
B. 构造函数可以重载
C. 构造函数可以设置默认参数
D. 构造函数可以指定返回类型
第 4 页 共 25 页
45. 通常,拷贝构造函数的参数是 (
)
A. 某个对象名 B. 某个对象的成员名
C. 某个对象的引用名 D. 某个对象的指针名
B) p 是一个指向某个数组中第 10 个元素的指针,该元素是 double 型变量;
C) p[5]表示某个数组的第 10 个元素的值;
D) p 是一个具有 10 个元素的指针数组,每个元素是一个 double 型指针;
33. 下面的函数声明中, 哪一个是” void BC(int a, int b);”的重载函数?
49. 已知 print ()函数是一个类无返回值的常成员函数,下列表示中正确的是( )。
A.void print()const B.const void print()
C.void const print ; D.void print (const );
50. 如果类 A 被说明成类 B 的友元,则 (
46. 继承机制的作用是 (
)
A. 信息隐藏 B. 数据封装 C. 代码重用
D. 数据抽象
47. 类的析构函数的作用是 (
)
A.一般成员函数 B.类的初始化 C.对象的初始化 D.删除对象创建的所有对象
48. 类的析构函数是在 (
) 调用的。
A. 类创建时
B. 创建对象时 C. 删除对象时 D. 不自动调用
。