C++选择题填空题 下载本文

一、填空题

1、在类中必须声明成员函数的( ),成员函数的( )部分可以写在类外。 [答案]原型 实现

2、如果需要在被调函数运行期间,改变主调函数中实参变量的值,则函数的形参应该是( )类型或( )类型。 [答案]引用 指针 3、( )类只能作为基类使用,而不能声明它的对象。 [答案]抽象

4、拷贝构造函数的形参必须是( ) [答案]本类对象的引用

5、进行函数重载时,被重载的同名函数如果都没有用const修饰,则它们的形参( )( ) 必须不同。 [答案]个数 类型

6、通过一个( )对象只能调用它的常成员函数,不能调用其他成员函数。 [答案]常

二、选择题

1、编译时多态性使用什么获得?(A) A. 重载函数 B. 继承 C. 虚函数 D. B和C

2、假定MyClass为一个类,则该类的拷贝构造函数的声明语句为(C)。 A.MyClass(MyClass x) B.MyClass&(MyClass x) C.MyClass(MyClass &x) D.MyClass(MyClass *x)

3、列带缺省值参数的函数说明中,正确的说明是(C) 1.??????? A. int Fun(int x=1, int y, int z=3); B. int Fun(int x, int y=2, int z); C. int Fun(int x, int y, int z=3); D. int Fun(int x=1, int y, int z);

4、下列有关函数重载的叙述中,错误的是(A) A.函数重载就是用相同的函数名定义多个函数 B.重载函数的参数列表必须不同

C.函数的返回值类型不能用于对重载函数的区分

或 D.const关键字可以用于对重载函数的区分

5、 在一个函数中,要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用(A)。

A. 内联函数 B. 重载函数 C. 递归调用 D. 嵌套调用

6、下列有关C++类的说法中,不正确的是(C)。 A. 类是一种用户自定义的数据类型

B. 只有类中的成员函数或类的友元函数才能存取类中的私有成员 C. 在类中,如果不做特别说明,所有成员的访问权限均为私有的 D. 在类中,如果不做特别说明,所有成员的访问权限均为公用的

7、Sample是一个类,执行下面语句后,执行Sample类的构造函数的次数是(D) Sample a[3], *p=new Sample; A.1 B.2 C.3 D.4

8、关于常数据成员的说法,不正确的是(D)。

A.常数据成员的定义形式与一般常变量的定义形式相同,只不过常数据成员的定义必须出现在类体中

B.常数据成员必须进行初始化,并且不能被更新

C.常数据成员通过构造函数的成员初始化列表进行初始化 D.常数据成员可以在定义时直接初始化

9、下面描述中,表达错误的是(B)

A. 公用继承时基类中的public成员在派生类中仍是public的 B. 公用继承时基类中的private成员在派生类中仍是private的 C. 公用继承时基类中的protected成员在派生类中仍是protected的 D. 私有继承时基类中的public成员在派生类中是private的

10、下面(B)的叙述不符合赋值兼容规则。 A. 派生类的对象可以赋值给基类的对象 B. 基类的对象可以赋值给派生类的对象 C. 派生类的对象可以初始化基类的对象

D. 派生类的对象的地址可以赋值给指向基类的指针

11、关于虚函数的描述中,(C)是正确的。 A. 虚函数是一个static类型的成员函数 B. 虚函数是一个非成员函数

C. 基类中说明了虚函数后,派生类中与其对应的函数可不必说明为虚函数 D. 派生类的虚函数与基类的虚函数具有不同的参数个数和类型

12、下面关于友元的描述中,错误的是(D)。 A. 友元函数可以访问该类的私有数据成员

B. 一个类的友元类中的成员函数都是这个类的友元函数 C. 友元可以提高程序的运行效率 D. 类与类之间的友元关系可以继承

13、 下列关于静态数据成员的说法,不正确的是(C)。

A. 类中定义的公用静态数据成员,可以通过类的对象来访问 B. 类中定义的所有静态数据成员,都必须在类外初始化 C. 静态数据成员不是所有对象所共用的

D. 普通的成员函数可以直接访问类中的静态数据成员

14、下列关于模板形参的描述中,错误的是(B) A.模板形参表必须在关键字template之后 B.模板形参表必须用括弧()括起来 C.可以用class修饰模板形参 D.可以用typename修饰模板形参

15、任意一个类,析构函数的个数最多是:(B) A. 不限个数 B. 1 C. 2 D. 3

16、下列有关类继承的叙述中,错误的是 (D) A.继承可以实现软件复用

B.虚基类可以解决由多继承产生的二义性问题 C.派生类构造函数要负责调用基类的构造函数 D.派生类没有继承基类的私有成员

17、下列有关抽象类和纯虚函数的叙述中,错误的是(D) A.拥有纯虚函数的类是抽象类,不能用来定义对象 B.抽象类的派生类若不实现纯虚函数,它也是抽象类 C.纯虚函数的声明以“=0;”结束 D.虚函数都不能有函数体 18、考虑下面的函数原型声明:void testDefaulParam(int a,int b=7,char z='*');下面函数调用中,不合法的是(C)。

A. testDefaulParam(5); testDefaulParam(5,8); C.testDefaulParam(5,'#');

testDefaulParam(0,0,'*');

19、要实现动态联编必须(D)

通过成员名限定来调用虚函数 B.通过对象名来调用虚函数 C.通过派生类对象来调用虚函数

D.通过对象指针或引用来调用虚函数

20、下列语句中,将函数int sum(int x, int y)正确重载的是(C)。 A. float sum(int x, int y); B. int sum(int a, int b);

C. float sum(float x, float y); D. double sum(int y, int x);

21、在派生类中定义虚函数时,可以与基类中相应的虚函数不同的是(D) A.参数类型 B.参数个数 C.函数名称 D.函数体

22、下列有关类成员的叙述中,正确的是(B) A. 友元函数是类的成员函数

B.类成员的默认访问权限是私有的 C.类成员函数必须声明为公有的 D.类的静态数据成员不能是常成员

23、已知:print( )函数是一个类的常成员函数,它无返回值,下列表示中,(A)是正确的。 A. void print( ) const; B. const void print( ); C. void const print( ); D. void print(const);

24、运用运算符delete删除一个动态对象时(C)。

A.系统首先为该动态对象调用构造函数,再释放其占用的内存 B.系统首先释放该动态对象占用的内存,再为其调用构造函数 C.系统首先为该动态对象调用析构函数,再释放其占用的内存 D.系统首先释放动态对象占用的内存,再为其调用析构函数

25、 可以在类外用p.a的形式访问派生类对象p的基类成员a,其中a是(D)。 A.私有继承的公用成员 B.公用继承的私有成员 C.公用继承的保护成员 D.公用继承的公用成员

26、在公用继承方式下,有关派生类对象和基类对象的关系,不正确的叙述是(C)。 A.派生类的对象可以赋给基类的对象 B.派生类的对象可以初始化基类的引用 C.派生类的对象可以直接访问基类中的成员 D.派生类的对象的地址可以赋给指向基类的指针

27、模板的使用实际上是将类模板实例化成一个(C)。 A.函数 B.对象 C.类 D.抽象类

28、拷贝构造函数的参数通常是(C)。 A. 无特殊要求 B. 指向对象的指针 C. 自已类对象的常引用 D. 对象

29、下面关于类的成员函数描述不正确的是:(A)

A 静态成员函数内可以直接访问类的非静态成员数据 B 静态成员函数内可以直接访问类的静态成员数据 C 非静态成员函数可以直接访问类的非静态成员数据 D 非静态成员函数可以直接访问类的静态成员数据

30、说明内联函数的关键字是(A)。 A. inline B. virtual C. define D. static

31、下面的哪个保留字不能作为函数的返回类型?(C) A. void B. int C. new D. long

32、基类和派生类可以分别称为(B)。 A. “大类”和“小类” B. “父类”和“子类” C. “小类”和“大类” D. “子类”和“父类”

33、面向对象程序设计思想的主要特征中不包括(D)。 A. 封装性