C++程序设计(下)模拟试题 联系客服

发布时间 : 星期四 文章C++程序设计(下)模拟试题更新完毕开始阅读250b4301eff9aef8941e0646

C++程序设计(下)模拟试题

一、 选择题

1、使C++语言成为面向对象语言的最主要特点是 。

A、允许重载函数,并允许设置参数缺省值 B、引进类和对象的概念 C、丰富了运算符

D、使用VC++集成环境调试程序 2. 一个类的构造函数____________。

A.是唯一的 B.允许重载 C.至多可有两个 D.只能是缺省的 3、下列说法中不正确的是 。

A、指向基类对象的指针可以指向派生类对象

B、基类指针指向派生类对象时,只能访问到从基类继承来的成员 C、派生类对象可以初始化基类引用

D、指向派生类对象的指针可以指向基类对象

4. 一个基类以私有方式派生时,其基类中的公有成员和保护成员在派生类中 (4) 。

A.均成为私有的成员 B.均成为公有的成员

C.均成为保护的成员 D.仍为公有的和保护的成员 5. 类MyClass已经定义,执行语句“MyClass ca[3],*p[2]”时,将调用_______次构造函数。

A.2 B.3 C.4 D.5

6、设有以下定义:

class Ball :public Circle{

double r ; public: ? ? }

则正确的描述为 。

A、Circle是Ball的派生类 B、r是Circle的数据成员

C、Ball是Circle的派生类 D、r是Ball和Circle共同的数据成员 7. 有关运算符重载的说法,正确的是:(6)

A)运算符重载函数最多只能有一个形参 B)调用成员函数实现双目运算符的重载时,运算符左边的操作数是必须对象 C)调用成员函数实现的运算符重载,右操作数必须是对象 D)调用友元函数实现的运算符重载,右操作数必须是对象 E)C++系统定义过的所有运算符都可以重载

F)能够用友元重载的运算符都可以用成员函数重载 G)能够用成员函数重载的运算符都可以用友元重载

H)运算符重载是指在一个类中对某个运算符进行多次定义

(A) AF (B) DH (C) BG (D) CE

1

8.C++中多态性包括两种:编译时和运行时的。运行时多态性是通过 (8) 实现的。

①函数重载 ②运算符重载 ③ 类继承关系 ④ 动态链接 ⑤虚函数

A)①和② B)③和⑤ C)④和⑤ D)③和④ 9. 下列有关类和对象的说法中,正确的是____________。

A.类与对象没有区别 B.要为类和对象分配存储空间 C.对象是类的实例,为对象分配存储空间而不为类分配存储空间 D.类是对象的实例,为类分配存储空间而不为对象分配存储空间

10. 以下类中分别说明了“+=”和“++”运算符重载函数的原型。如果主函数中有定义:fun m,c,d;,那么,当执行语句d+=m; 时,C++编译器对语句作如下解释: (10)

A. d=operator+=(m); B. m=operator+=(d); C. m.operator+=(d); D. d.operator+=(m); class fun{ public: .. .. ..

fun operator +=(fun &);

friend fun operator ++(fun &,int);

};

二. 填空题(每空1分,共20分)

1.在C++中,类的继承有_ _继承和_ __继承。C++的两种多态性分别是 _ __多态性和_ _多态性。

2.类限定成员的访问权限有__ __ _ __,_ __ _____和____ ___ ___ ___三种。 3.派生类构造函数的执行顺序是先执行 ,再执行对象成员所在类的构造函数,最后执行派生类构造函数体中的内容。

4.采用成员函数实现”+”运算符重载时,对象c1+c2,编译器将解释为:_

_ _,

而采用友元函数实现”+”运算符重载时,对象c1+c2,编译器将解释为: _。 5. 如果一个类中含有 函数,则该类称为抽象类,不能直接创建对象,只能用作 。 6.“基类的构造函数和析构函数都不能继承。”这句话是对/错? 。

7.叙述new和delete运算符作用: 。 8.在类名为classname中用友元函数声明 “>>”重载函数的格式为: 。

9.一个类的对象(能/否) 成为另一个类的成员.

10. 在C++的输入和输出流类库中定义了四个流:_ _、_ _、_ _和_ _。

三.阅读填空题(每题2分,共20分)

2

1. 阅读以下程序段并完成问题:

#include class A{ int x; public:

A(int a=0){ x=a;

cout<<\

cout<<\调用构造函数!\ }

~A( ){cout<<\调用析构函数!\};

A a1(4);

void main(void){

cout<<\程序开始!\ A a2;

cout<<\程序结束!\}

程序输出结果是:

2.列程序的输出结果是 。

class A{ public: static int x,y;}; int A::x=1; int A::y=2; void main(void){

A a1,a2;

a1.x=10;a2.y=20;

cout<<(a1.x+a1.y)<<' '<<(a2.x+a2.y)<<' '<<(A::x + A::y)<

}

3.以下程序输出的各行是 (1) 、 (2) 、 (3) 。

#include class A{ public: int x;

A(){x=100;}

3

A(int i){ x=i;}

void Show(){cout<<\};

class B{ public: int y;

B(){y=300;} B(int i){y=i;}

void Show(){cout<<\};

class C:public A,public B{ public: int y;

C(int a=100,int b=200,int c=300):A(a),B(b){y=c;} void Show(){cout<<\};

void main(void) {

C c1(400,500,600); C c2[3]; c1.y=200; c1.Show(); c1.A::Show(); c1.B::Show(); }

4、以下程序的执行结果是 (9) 、 (10) 、 (11) 、 (12) 。

#include class CSample{

int n;

static int k; public:

CSample(int i){n=i;k++;}; void disp(); };

void CSample::disp( ){

cout<<\}

int CSample::k=0; void main(void){

CSample a(10),b(20),C(30),d(40); a.disp(); b.disp(); C.disp(); d.disp();

4