c++程序设计复习题

  • 格式:docx
  • 大小:38.62 KB
  • 文档页数:11

1、关于结构体变量运算重载中,正确的单目运算符重载语法格式(B)(A)函数类型名单目运算符operator(虚参){函数体}(B)函数类型名operator单目运算符(虚参){函数体}(C)函数类型名单目运算符operator(){函数体}(D)函数类型名operator单目运算符(){函数体}2、派生类对象只能访问基类中的(A)(A)公有继承的公有的成员(B)公有继承的私有成员(C)公有继承的保护成员(D)私有继承的公有成员3、关于派生类叙述中,错误的说法是(B)-(A)派生类中从基类公有继承过来的公有成员的访问权限不变(B)任何类都有基类(C)派生类还可作为另一类的基类(D)基类中的构造函数和析构函数是不可继承的4、设有类的定义如下:Class AAA{int x;char s[12];}ob;则在VC++环境下,变量ob所占内存空间字节数是(C)字节5.在公有派生情况下,有关派生类对象和基类对象的关系,不正确的叙述是( C )A)派生类的对象可以赋给基类的对象B)派生类的对象可以初始化基类的引用C)派生类的对象可以直接访问基类中的成员D)派生类的对象的地址可以赋给指向基类的指针(A)14 (B)15 (c)16 (D)176、关于构造函数的叙述中,错误的说法是(B)(A)构造函数的名称必须为类名(B)构造函数最多只能有一个(C)创建对象时自动执行构造函数(D)构造函数无任何函数类型7、(A)只能访问静态成员变量(A)静态成员函数(B)虚函数(C)构造函数(D)析构函数8、C++中类有两种用法,一种是类的实例化,即生成类对象,另一种是通过(B)派生出新的类(A)复用(B)继承(C)重载(D)封装9、设有类型说明:enum color {red,yellow=3,white,black};则执行语句cout<<white<<’\n’后,输出的结果是(A)(A)4 (B)3 (C)2 (D)110、对于下面几个函数:void f(int x){……} //1int f(int y){……} //2int f(int i ,int j){……} //3float k(int x){……} //4(c)是重载函数(A)4个全部(B)1和4 (C)2和3 (D)3和411、在一个类中,要求通过函数来实现一个不太复杂的功能,并且要求加快执行速度,选用(A)合适(A)内联函数(B)重载函数(C)递归调用(D)嵌套调用12、每个类(C)构造函数(A)只能有一个(B)只可有公有的(C)可以有多个(D)只可有缺省的13、在一个类中可以对一个操作符进行(D)重载(A)1种(B)2种以下(C)3种以下(D)多种14、在公有继承的情况下,基类非私有成员在派生类中的访问权限(B)(A)受限制(B)保持不变(C)受保护(D)不受保护15、应在下列程序划线处填入的正确语句是(C)#include <iostream>class Base{Public:vid fun(){cout<<”Base::fun”<<endl;}};cass Derived:public Base{void fun(){//显示调用基类的函数fun()cout<<”Derived ::fun”<<endl;}};(A)fun();(B)Base.fun();(C)Base::fun(); (D)Base->fun();16、定义析构函数时,应该注意(C)(A)其名与类名完全相同(B)返回类型是void类型(C)无形参,也不可重载(D)函数体中必须有delete语句17、对于在类中定义的静态数据成员,下面正确的说法是(C)(A)该类的每个对象中都有一个静态数据成员(B)对象创建时产生(C)在类外进行初始化(D)既可以在类外初始化,也可以在类内初始化18、C++中声明常量的关键字是(A)(A)const (B)extern (C)public (D)enum19、在有关类和对象的描述中,(C )是错的:(A)对象是类的一个实例。

(B)任何一个对象只能属于一个类。

(C)一个类只能有一个对象。

(D)类和对象的关系与数据类型和变量的关系相似20、关于下列虚函数的描述中,(C )是正确的。

(A). 虚函数是一个static存储类的成员函数。

(B). 虚函数是一个非成员函数。

(C). 基类中说明了虚函数后,派生类中可不必将对应的函数说明为虚函数,因虚特性可继承。

(D). 派生类的虚函数与基类的同名虚函数的形参应具有不同的类型或个数。

21.对定义重载函数的下列要求中,( D )是错误的。

(A)要求参数个数不同(B)要求参数中至少有一个类型不同(C)要求参数个数相同时,参数类型不同(D)要求函数返回值不同22、关于纯虚函数和抽象类的描述中,(C )是错误的。

(A). 纯虚数是一种特殊的虚函数,它没有具体实现(定义)。

(B). 抽象类中至少具有一个纯虚函数。

(C). 抽象类的派生类中一定不会再有纯虚函数。

(D). 抽象类一般作为基类使用,而由其派生类给出纯虚函数的实现(定义)。

23.对于拷贝构造函数和赋值操作的关系,正确的描述是( A )。

(A)当调用拷贝构造函数时,类的对象正在被建立并被初始化(B)进行赋值操作时,会调用类的构造函数(C)拷贝初始化构造函数和赋值操作是完全一样的操作(D)拷贝初始化构造函数和赋值操作不能在同一个类中被同时定义24.重载赋值操作符时,应声明为__C____函数。

(A)友元(B)虚函数(C)成员(D)多态25. 如没有使用private关键字定义类的数据成员,则默认为( A )(A)private (B)public ( C)protected (D)friend26.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)27. 应在下列程序划线处填入的正确语句是(C)#include <iostream>class Base{Public:vid fun(){cout<<”Base::fun”<<endl;}};cass Derived:public Base{void fun(){//显示调用基类的函数fun()cout<<”Derived ::fun”<<endl;}};(A)fun();(B)Base.fun();(C)Base::fun(); (D)Base->fun();28.公有继承方式应使用的关键字是( B )。

(A)private (B)public (C)protected (D)publish(29)关于getline()函数的下列描述中,(D)是错误的。

(A)该函数是用来从键盘读取字符串的(B)该函数读取的字符串长度是受限制的(C)该函数读取字符串时遇到终止符就停止(D)该函数只能用换行符作为终止符二、判断题:(1)一个类中可以只有公有成员,也可以只有私有成员,也可以公有、私有成员都有。

(√)(2)用class定义的类中,缺省的访问权限是公有的。

(╳)(3)析构函数是一个函数体为空的成员函数。

(╳)(4)可在类的构造函数的初始化列表中对其静态数据成员进行初始化。

(╳)(5)在公有继承中,派生类对象的成员函数可以访问基类部分中的私有成员。

(╳)(6)在公有继承中,派生类对象的成员函数不可以访问基类部分中的保护成员。

(╳)(6)派生类是从基类派生出来的,它不能再生成新的派生类。

(╳)(7)公有派生类的对象可以访问基类的公有成员。

(√)(8)函数的参数个数、类型或返回值不同,就算是重载。

(╳)(9)多数运算符可以重载,个别运算符不能重载,运算符重载是通过函数定义实现的。

(√)(10)重载运算符保持原运算符的优先级和结合性不变。

(√)(11)可以在类的构造函数中对静态数据成员进行初始化。

(╳)(12).在私有继承中,基类中只有公有成员对派生类是可见的。

(╳)(13)对象数组的元素可以不同类的对象。

(╳)(14)我们在编程时可以调用类的构造函数。

(╳)(15).函数模板中模板参数只能有一个。

(╳)(16)构造函数可以被继承(╳)(17)析构函数不能被继承(√)(18).对象引用做为函数参数比用对象指针更方便些。

(√)(19)函数模板在实例化时,在有些情况下可以对类型参数进行隐式类型转换。

(╳)(20).对每个可重载的运算符来说,只能重载为友元函数。

(╳)(21)派生类在继承时,缺省的继承方式是public。

(╳)三、填空题1.类A是类B的基类,类B对类A是私有继承,则类A的公有成员在类B中的访问控制属性是_____private______。

2、当建立对象时,程序自动调用该类的构造函数。

3、在C++中有二种参数传递方式:传值和传址。

4、模板对处理数据的类型的要求不同可以分为两种类型:函数模板和类模板。

5、声明一个类模板或函数模板时,需要用到的保留字为:____ template ________。

6、虚函数实现了C++的多态机制,类实现了C++的封装机制。

7、面向对象程序设计的(继承)机制提供了重复利用程序资源的一种途径。

8、C++语言中,可自动完成对象的初始化任务的函数称为__构造函数___,而____析构______函数用于在对象撤销时执行收尾任务。

9、一个类中声明具有类类型的数据成员称为______类对象______。

10、C++语言中,编译时多态性是通过__重载_____实现的,而运行时多态性通过______继承_____和______虚函数_____实现。

11、假定要对类AB定义加号操作符重载,实现两个AB类对象的加法,并返回AB类对象,则该运算符重载声明语句为:_____ AB operator +(AB obj);。

12、定义虚函数所用的关键字是___ virtual _____。

13、派生类是私有继承于基类的,则基类的私有成员在派生类中的访问控制方式是_____不可访问______。

14、已知类的名字为TStudent,则其构造函数名为____ TStudent ______,其析构函数名为____~ TStudent _______。

15、在C++流类库中,文件输入流类和文件输出流类的名称分别为:____ ifstream _____和___ ofstream _______。