C++复习题.docx
- 文档编号:9573346
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:31
- 大小:27.24KB
C++复习题.docx
《C++复习题.docx》由会员分享,可在线阅读,更多相关《C++复习题.docx(31页珍藏版)》请在冰豆网上搜索。
C++复习题
C++复习
判断题(对√,错X)
构造函数的功能是对对象进行初始化。
√
C++是一个纯正的面向对象的语言。
X
一个类中只能定义一个析构函数。
√
函数的默认参数没有顺序要求,可以随意定义。
X
在C++中,小数点前的0可以省略,但小数点不可以省略。
√
拷贝构造函数用它所在类的对象作为参数。
X
析构函数不指定参数,而构造函数可以指定参数。
√
在C++中,动态分配内存是通过new函数来实现的。
X
在私有继承中,派生类的对象不可访问基类中的任何成员。
√
派生类中继承的基类成员的访问权限到派生类保持不变。
X
一个类只能有一个对象。
X
在程序中可以直接调用构造函数。
X
C++中的所有函数调用都是传值调用。
X
对象数组的元素可以是不同类的对象。
X
在C++语言中,”A”占两个字节,而’A’占一个字节。
√
16.友元函数不是成员函数,但它可以访问类中私有成员。
X
17.构造函数和析构函数都可以重载,因为它们都是成员函数。
x
18.用class定义的类中,默认的访问权限是公有的。
x
19.假定AB为一个类,则执行“ABa[10];”语句时,系统自动调用该类的构造函数的次数为1次。
x
20.运算符new可以创建变量或对象,也可以创建数组。
对
二、填空题
1.定义重载函数时,应在形参的个数或形参的___类型___上有所不同。
2.当使用new运算符动态生成一个类的对象时,隐含着调用该类的_构造__函数。
3.带有纯虚函数的类是抽象类。
4.在C++中,类是对具有共同属性和行为的一类事物的抽象描述,共同属性被描述为类中的__数据成员__,共同行为被描述为类中的___函数成员。
5.假定用户没有给一个名为AA的类定义构造函数,则系统为其定义的默认构造函数形式为__AA(){}____。
6.用于输出表达式值的标准输出流对象是_cout_,用于从键盘上为变量输入值的标准输入流对象是____cin__。
7.组成C++语言的基本符号包括:
英文字母、数字和特殊符号。
C++语言的标识符是以字母或下划线开头的。
8.如果类A继承了类B,则类A称为子类或派生类类,类B称为基类或父类类。
9.函数的参数个数、类型及位置都相同,只是返回值的类型不同,这不是重载函数。
不是
10.若只需要通过一个成员函数读取数据成员的值,而不需要修改它,则应在函数头的后面加上__const___关键字。
11.若在类的定义体中只给出了一个成员函数的原型,则在类外给出完整定义时,其函数名前必须加上___类名____和两个冒号分隔符。
12.假定用户只为类AB定义了一个构造函数“AB(intaa,intbb=0){a=aa;b=bb;}”,则定义该类的对象时,其实参表中至多带有__1_个实参。
13.应用程序jisuan.cpp中只有一个函数,则这个函数的名称是main。
14.类中数据成员的默认访问权限是私有。
15.一个C++程序的执行从主函数开始。
16.定义在类内部的函数默认为__内联函数___,该函数的函数体会在编译时被
插入到每一个调用它的地方。
17.若一个类的某成员函数只是读其数据域的值,而不能修改它,则应在函数头的最后用const关键字修饰。
18.在C++程序中,对刚创建的对象进行初始化的工作由构造函数来完成;而对象被删除前的一些清理工作则是由析构函数来完成的。
19.一个C++程序的开发步骤通常包括:
编辑、编译、连接、运行和调试。
20.一般情况下,按照面向对象方法的要求,把类中数据成员的访问控制属性定义为_私有_类型,而把成员函数的访问控制属性定义为__公有_类型。
21.C++中,对类中的成员函数和属性的访问是通过_public_、_private___和_protected_这3个关键字来控制的。
22.C++程序主要有三种基本控制结构,分别是顺序结构、 选择结构 和 循环结构 。
23.描述命题"A大于B且小于C"的C++表达式为 A>B&&A 24.执行下列语句后,a的值是-40,inta=5;a+=a-=a*a; 25.若需要把一个函数“void F();”定义为一个类AB的友元函数,则应在类AB的定义中加入一条语句 friendvoidF(); 。 26.如果要将基类Shape中的方法floatArea()声明为纯虚函数,使用的语句为virtualfloatArea()=0; 。 27.设px是指向一个类动态对象的指针变量,则执行“delete px;”语句时,将自动调用该类的 析构函数 。 28.抽象类不能实例化,即不能定义抽象类的对象。 29.类拥有两类成员,即__数据成员__和__函数成员___。 30.类中的构造函数有__任意__个,析构函数有__1_个。 31.在C++中,__new_运算符用来对指定类型对象动态分配内存,而 _delete__运算符则用来删除动态分配的内存空间。 32.非成员函数应声明为类的__友元函数__,才能访问这个类的private成员。 33.设置虚基类的目的是使再次派生的类中仅有一个间接基类的副本。 可通过关键字virtual标识虚基类。 34.在类中定义和实现的函数称为_内联成员函数_。 35.假定用户没有给一个名为MyClass的类定义构造函数,则系统为其定义的默认构造函数形式为_MyClass(){}_。 36.假定用户没有给一个名为MyClass的类定义析构函数,则系统为其定义的默认析构函数形式为___~MyClass(){}_。 三、单项选择题 1.如有下列类的声明: ClassFOO{intbar;};则类的成员bar是C。 A.公有数据成员B.公有成员函数C.私有数据成员D.私有成员函数 2.下列关于类和对象叙述错误的是A。 A.一个类只能有一个对象B.对象是类的具体实例 C.类是对某一类对象的抽象D.类和对象的关系是数据类型与变量的关系 3.要禁止修改指针p本身,又要禁止修改p所指向的数据,这样的指针应定义 为D。 A.constchar*ptr=“xyz”;B.charconst*ptr=“xyz”; C.char*constptr=“xyz”;D.constchar*constptr=“xyz”; 4.假定AB为一个类,则执行“ABA[10];”语句时,系统自动调用该类的构造函数的次数为A。 A.10B.9C.8D.7 5.关于动态联编的下列描述中,错误的是D。 A.动态联编是以虚函数为基础的 B.动态联编是在运行时确定所调用的函数代码的 C.动态联编调用函数操作是指向对象的指针或对象引用 D.动态联编是在编译时确定所调用的函数代码的 6.如果类B被说明成类A的友元,则B。 A.类A的成员即类B的成员B.类B的成员函数可以访问类A的成员 C.类B的成员即类A的成员D.类A也是类B的友元 7.面向对象程序设计思想的主要特征中不包括B。 A.封装性B.功能分解,逐步求精C.继承性D.多态性 8.假定AB为一个类,则为该类的拷贝构造函数的原型说明是B。 A.AB(ABx);B.AB(AB&x);C.voidAB(AB&x);D.AB(intx); 9.在公有继承的情况下,基类的私有成员在派生类中的访问权限是A。 A.不可访问 B.可以访问C.公有的 D.保护的 10.下列关于C++类的各种描述中,错误的是C。 A.类是对逻辑上相关的数据与函数的封装 B.类用于描述事物的属性和对事物的操作 C.类与类之间必须是平等的关系,而不能组成层次关系 D.类与类之间可以通过封装而具有明确的独立性 11.在下列各种符号常量的定义中,错误的定义是C。 A.constfloatf=10.6;B.constintM=20; C.constcharch;D.constboolmark=true; 12.假定AB为一个类,px为指向该类动态对象数组的指针,该数组长度为n, 则执行“delete[]px;”语句时,自动调用该类析构函数的次数为DC。 A.0B.1C.nD.n+1 13.假定AA为一个类,a为该类私有的数据成员,Geta()为该类公有函数成员,它返回a的值,obj为该类的一个对象,则访问obj对象中数据成员a的格式 为D。 A.obj.aB.obj.a()C.obj->Geta()D.obj.Geta() 14.假定VOLUME为一个类,在类体中包含如下函数原型: VOLUMEoperator-(VOLUMEc2); 关于这个函数的叙述中,错误的是B。 A.这是重载运算符-的函数B.这个函数所重载的运算符是一个一元运算符 C.这是一个成员函数D.这个函数不改变类的任何数据成员的值 15.在C++中实现封装性是借助于B。 A.枚举B.类C.数组D.函数 16.语句“int*constp;”,说明不能修改的是A。 A.p指针本身的值B.p指针指向的变量的值 C.p指针指向的数据类型D.上述A.B.C.三者 17.下列声明“A为虚基类,派生B类”,正确的是D。 A.classvirtualB: publicAB.virtualclassB: publicA C.classB: publicAvirtualD.classB: virtualpublicA 18.已知print()函数是一个类的常成员函数,下列声明中正确的 是A。 A.voidprint()const;B.constvoidprint(); C.voidconstprint();D.voidprint(const); 19.下面叙述错误的是B。 A.基类中的private成员在public派生类中是不可直接访问的 B.基类中的private成员在public派生类中是private的 C.基类中的public成员在public派生类中是public的 D.基类中的protected成员在public派生类中是protected的 20.下列静态数据成员特性中,错误的是C。 A.说明静态数据成员时前边要加修饰符static B.静态数据成员要在类体外进行初始化 C.静态数据成员不是所有对象共有的 D.引用静态数据成员时,要在静态数据成员名前加<类名>和作用域分辨符 21.若类中的成员在定义时紧接着类名称,且没有使用访问控制属性关键字, 则该成员缺省定义为B。 A.publicB.privateC.protectedD.friend 22.在下列关于设置参数默认值的各种描述中,正确的是C。 A.不允许设置参数的默认值 B.设置参数默认值时,应该是先设置左边的再设置右边的 C.设置参数默认值时,应该是先设置右边的再设置左边的 D.设置参数默认值时,应该全部参数都设置 23.一个函数功能很简单,但要求被频繁调用,最好定义为A。 A.内联函数B.重载函数C.递归函数D.嵌套函数 24.如果一个类至少有一个纯虚函数,那么就称该类为A。 A.抽象类B.虚基类C.派生类D.以上都不对 25.要实现动态联编,调用虚函数必须通过A。 A.对象指针B.成员名限定C.对象名D.派生类名 26.假定A为一个类,则执行“Ax;”语句时将自动调用该类的B。 A.有参构造函数B.无参构造函数C.拷贝构造函数D.赋值构造函数 27.通过一个基类类型的D调用虚函数时,采用动态绑定。 A.派生类名 B.对象C.成员名限定D.指针 28.定义析构函数时,正确的是B。 A.其名与类名完全相同 B.无形参,也没有返回值 C.返回类型是void类型 D.函数体中必须有delete语句 29.C++源程序文件的缺省扩展名是B。 A.exeB.CppC.objD.lik 30.下面的函数声明中,C是“voidBC(inta,intb);”的重载函数B。 A.intBC(inta,intb)B.voidBC(intx,inty) C.floatBC(inta,intb,intc=0)D.voidBC(inta,intb=0) 31.下面的哪一个函数头格式不正确? _D__。 A.AA(inta,intb) B.AA(inta,intb=0) C.AA(inta=0,intb=0) D.AA(inta=0,intb) 32.C++语言中规定,函数的返回值的类型是由C。 A.return语句中的表达式类型所决定B调用该函数时的主调用函数类型所决定 C.在定义该函数时所指的数据类型所决定D.调用该函数时系统临时决定 33.C++语言中基本数据类型是C。 A.整型、浮点型、逻辑型和无值型B.整型、字符型、浮点型和无值型 C.整型、浮点型、字符型和逻辑型D.整型、字符型、逻辑型和无值型 34.关于成员函数特征的描述中,不正确的是____C_______。 A.成员函数的第一个参数有一个隐含的this指针 B.成员函数可以是常成员函数,逻辑上不改变对象的状态 C.成员函数不可以是静态的,只有数据域是静态的 D.作用在常对象的非常成员函数在编译中会出现错误或警告 35.假定k是一个int类型的变量,则关于变量pointer的正确定义语句是B A.doublepointer=&kB.int*pointer=&k C.int&pointer=*kD.char*pointer=”hello”; 36.不能重载的运算符是______B_____。 A.“[]”运算符B.“? : ”运算符 C.“()”运算符D.“+”运算符 37.下面关于友元的描述中,错误的是D。 A.友元函数可以访问该类的私有数据成员。 B.一个类的友元类中的成员函数都是这个类的友元函数。 C.友元函数是类的非成员函数。 D.类与类之间的友元关系可以传递。 38.与C语言printf("Helloworld\n");语句功能相同的C++语句 是C。 A.cout>>"Helloworld\n"; B.cin>>"Helloworld\n"; C.cout<<"Helloworld\n"; D.cin<<"Helloworld\n"; 39.设intarr[5]={0},*p=arr;下面的表达式,哪个最有可能不是0的是_____B______ A.arr[0]B.*(p+5)C.*pD.arr[2] 40.构造函数不具备的特征的是____D______。 A.构造函数的函数名与类名相同B.构造函数可以重载 C.构造函数可以设置默认参数D.构造函数必须指定返回类型 41.与数学式1 A.1 42.以下关于函数模板叙述正确的是C。 A.函数模板也是一个具体类型的函数 B.函数模板的类型参数与函数的参数是同一个概念 C.通过使用不同的类型参数,函数模板可以生成不同类型的函数 D.用函数模板定义的函数没有类型 43.关于封装,下列说法中不正确的是D。 A.通过封装,对象的全部属性和操作结合在一起,形成一个整体 B.通过封装,一个对象的实现细节被尽可能地隐藏起来(不可见) C.通过封装,每个对象都成为相对独立的实体 D.通过封装,对象的属性都是不可见的 44.函数重载是指A。 A.两个或两个以上的函数取相同的函数名,但形参的个数或类型不同 B.两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同 C.两个以上的函数名字不同,但形参的个数或类型相同 D.两个以上的函数取相同的函数名,并且函数的返回类型相同 45.假定AB为一个类,则执行“ABr1=r2;”语句时将自动调用该类的D。 A.无参构造函数B.带参构造函数C.赋值重载函数D.拷贝构造函数 46.定义p并使p指向动态空间中的包含30个整数的数组所使用的定义语句为 A。 A.int*p=newint[30];B.int*p=newint(30); C.int*p=new[30];D.*p=newint[30]; 47.以下关于函数模板叙述正确的是C。 A.函数模板也是一个具体类型的函数 B.函数模板的类型参数与函数的参数是同一个概念 C.通过使用不同的类型参数,函数模板可以生成不同类型的函数 D.用函数模板定义的函数没有类型 48.一个类的友元函数能够访问该类的D。 A.私有成员B.保护成员C.公有成员D.所有成员 49.在类的定义形式中,数据成员、函数成员和A组成了类定义体。 A.成员的访问控制信息B.公有信息 B.私有信息D.保护信息 50.关于成员函数特征的下述描述中,错误的是B。 A.成员函数可以重载B.成员函数一定是内联函数 C.成员函数可以是静态的D.成员函数可以设置参数的默认值 51.友元的作用是C。 A.加强类的封装性B.增加成员函数的种类 C.提高程序的运行效率D.实现数据的隐藏性 四、程序阅读题 1.源程序如下: #include classA { public: staticintx; inty; }; intA: : x=15; voidmain() { Aa; a.y=30; cout< : x< cout< }; 15 15 2.源程序如下: #include"iostream.h" classA { public: A(inti=0){m=i;cout<<"Constructor"< voidset(inti){m=i;} voidprint(){cout< ~A(){cout<<"Destructor"< private: intm; }; voidmain() { Aa; Ab(5); b.print(); } Constructor0 Constructor5 5 3.源程序如下: #include voidmain() { intx=20,&r=x; r=r+3; cout<<"A: x="< r=x+10; cout<<"B: r="< } 23 33 4.源程序如下: #include classB0 {intn; public: B0(inta) { cout<<"constructingB0"< n=a;cout<<"n="< ~B0(){cout<<"destructingB0"< }; classB1: publicB0 { intm; public: B1(inta,intb): B0(a) {cout<<"constructingB1"< m=b;cout<<"m="< ~B1(){cout<<"destructingB1"< }; voidmain() { B1b1(2,4); } constructingB0 n=2 constructingB1 m=4 constructingB1 constructingB0 5.源程序如下: #include usingnamespacestd; classClass { public: Class(intn=10,intm=20); ~Class(); voidSet(intn,intm){x=n;y=m;} private: intx,y; }; Class: : Class(intn,intm) { Set(n,m); cout<<"Construct: x="< } Class: : ~Class() { cout<<"Destruct: x="< } voidmain() { Classx (1); Classy(2,3); cout<<"exiting…\n"; } Construct: x=1,y=20 Construct: x=2,y=3 exiting… Destruct: x=2,y=3 Destruct: x=1,y=20 6.源程序如下: #include"iostream.h" classOurobj { inti,s; staticintk; public: Ourobj(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 复习题