79面向对象程序设计-固定试卷模拟1-3.doc

上传人:聆听****声音 文档编号:8975322 上传时间:2023-05-16 格式:DOC 页数:12 大小:181.50KB
下载 相关 举报
79面向对象程序设计-固定试卷模拟1-3.doc_第1页
第1页 / 共12页
79面向对象程序设计-固定试卷模拟1-3.doc_第2页
第2页 / 共12页
79面向对象程序设计-固定试卷模拟1-3.doc_第3页
第3页 / 共12页
79面向对象程序设计-固定试卷模拟1-3.doc_第4页
第4页 / 共12页
79面向对象程序设计-固定试卷模拟1-3.doc_第5页
第5页 / 共12页
79面向对象程序设计-固定试卷模拟1-3.doc_第6页
第6页 / 共12页
79面向对象程序设计-固定试卷模拟1-3.doc_第7页
第7页 / 共12页
79面向对象程序设计-固定试卷模拟1-3.doc_第8页
第8页 / 共12页
79面向对象程序设计-固定试卷模拟1-3.doc_第9页
第9页 / 共12页
79面向对象程序设计-固定试卷模拟1-3.doc_第10页
第10页 / 共12页
79面向对象程序设计-固定试卷模拟1-3.doc_第11页
第11页 / 共12页
79面向对象程序设计-固定试卷模拟1-3.doc_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

79面向对象程序设计-固定试卷模拟1-3.doc

《79面向对象程序设计-固定试卷模拟1-3.doc》由会员分享,可在线阅读,更多相关《79面向对象程序设计-固定试卷模拟1-3.doc(12页珍藏版)》请在冰点文库上搜索。

79面向对象程序设计-固定试卷模拟1-3.doc

79面向对象程序设计_固定试卷模拟1-3

一、单选题

1.下列符号中能够作为C++标识符的是 D (2分)

A.4p B.howmany C.friend D._256

2.为了解决程序中函数调用的效率问题,可以将一些函数体代码不是很大,但被频繁调用的函数定义为B(2分)

A.重载函数 B.内联函数 C.递归函数 D.友元函数

3.抽象类至少包含一个 C (2分)

A.静态函数 B.虚析构函数 C.纯虚函数 D.友元函数

9.抽象类至少包含一个 B (2分)

A.友元函数 B.纯虚函数 C.虚函数 D.虚析构函数

4.C++中重载的运算符>>是 B (2分)

A.用于输入操作的成员函数 B.用于输入操作的非成员函数

C.用于输出操作的成员函数 D.用于输出操作的非成员函数

5.下列函数中,具有隐含this指针的是 D (2分)

classMyClass{

public:

MyClass(); //①

friendvoidfun2(); //②

staticintfun3(); //③

private:

intcount; //④

};

A.① B.② C.③ D.④

7.下列函数中,具有隐含的this指针的是 A (2分)

classMyClass{

public:

intfun1(); //①

friendintfun3(); //②

staticvoidfun2(); //③

staticintcount; //④

};

A.① B.② C.③ D.④

6.已知函数f的原型是voidf(int&x,inty);,变量v1、v2的定义是:

intv1,v2;,下列调用语句中,正确的是C(2分)

A.f(v1,&v2); B.f(v1,v2); C.f(&v1,v2); D.f(&v1,&v2);

7.下列有关继承和派生的描述中,错误的是 C (2分)

A.派生类要向基类的构造函数传递参数

B.多继承时可能产生二义性

C.派生类可以访问基类的所有数据成员,也能调用基类的所有成员函数

D.一个基类可以有多个派生类,一个派生类可以有多个基类

8.下列语句中,会产生编译错误的是 B (2分)

inti=0,j=1;

int&r=i; //①

&r=j; //②

r=r+5; //③

int*p=&i; //④

A.① B.② C.③ D.④

9.下列语句中,会产生编译错误的是 B (2分)

A.intx=5;int&ref=x; B.constintsize;

C.intx=5;int&ref=x;x++; D.constintsize=100;

10.不论派生类以何种方式继承基类,都不能使用基类的 C (2分)

A.保护成员和私有成员 B.公有成员 C.私有成员 D.保护成员

1.当派生类从基类私有继承时,基类中的公有成员和保护成员成为派生类的 C (2分)

A.保护成员和私有成员 B.公有成员 C.私有成员 D.保护成员

11.下列关于类和对象的描述中,错误的是 B (2分)

A.类是创建对象的模板 B.一个类只能有一个对象

C.一个对象一定属于某个类 D.对象是状态和操作的封装体

11.下列关于类和对象的描述中,正确的是 C (2分)

A.一个类只能有一个对象 B.类对象可以访问类的全部成员

C.类和对象的关系是一种数据类型与变量的关系 D.对象是对类的抽象

6.下列关于类和对象的描述中,错误的是 B (2分)

A.类具有封装性 B.类对象可以访问类的全部成员

C.类是所有对象的共同的行为和不同的状态的集合体 D.对象是类的具体实例

15.下列关于类定义的描述中,错误的是 A (2分)

A.类定义中包括数据成员和成员函数的声明 B.类成员的默认访问权限是私有的

C.可以在类体内对数据成员进行初始化 D.成员函数必须在类体内声明

12.如果'-'作为友元函数重载,在使用显式函数调用时,表达式x-y可以表示为A(2分)

A.x.operator-(y) B.operator-(x,y) C.y.operator-(x) D.operator-(y,x)

13.已知函数原型如下:

intFun(intx,inty=2,intz=3),则下列函数调用错误的是 D(2分)

A.Fun(4,5,6); B.Fun(1,2); C.Fun

(1); D.Fun("1");

18.已知函数原型为inttest(int,int,int);,则下列重载形式中正确的是 B (2分)

A.chartest(int,int,int); B.doubletest(int,int,double);

C.inttest(int,int,int=0); D.floattest(int,int,int) ;

14.下列关于友元的描述中,错误的是 D (2分)

A.关键字friend用于声明友元 B.一个类的成员函数可以是另一个类的友元

C.友元函数访问对象的成员不受访问特性影响 D.友元函数也是成员函数

6.下列关于友元的描述中,错误的是 B (2分)

A.如果函数fun()是类A的友元,那么在fun()中可以访问类A的私有成员

B.如果类A是类B的友元,那么类B也是类A的友元

C.如果类A是类B的友元,那么类A的所有成员函数都是类B的友元

D.友元必须在类体内声明

15.在C++中,要实现动态联编,调用虚函数时必须使用 B (2分)

A.派生类指针 B.基类指针 C.类 D.对象

4.C++中,实现封装性需借助于 B (2分)

A.枚举 B.类 C.数组 D.函数

16.在下列函数原型中,可以作为类A构造函数的是 A (2分)

A.voidA(int); B.intA(); C.A(int)const; D.A(int);

17.下列关于常类型的描述中,正确的是 C (2分)

A.可以通过成员函数修改常对象的状态 B.通过常对象可以调用一般成员函数

C.必须使用成员初始化列表初始化常数据成员 D.常对象中的成员函数都是常成员函数

13.下列关于常类型的描述中,错误的是 B (2分)

A.不能修改常对象的状态 B.通过常对象可以调用一般成员函数

C.常成员函数中不能修改对象的状态 D.必须使用成员初始化列表初始化常数据成员

18.释放一个类的对象时,系统自动调用 B (2分)

A.构造函数 B.析构函数 C.成员函数 D.友元函数

7.下列选项中,不是类成员函数的是 D (2分)

A.构造函数 B.析构函数 C.虚函数 D.友元函数

19.当一个派生类继承自一个基类时,基类中的所有公有成员都成为派生类的 A (2分)

A.可访问成员 B.公有成员 C.私有成员 D.保护成员

20.下列描述中,作为重载函数调用时选择依据的是 C (2分)

A.参数名字 B.函数体 C.函数名字 D.返回类型

1.下列运算符中,可以重载的是 D (2分)

A.?

:

B.. C.:

:

D.++

12.下列运算符中,不能被重载的是 C (2分)

A.* B.!

= C.:

:

D.++

2.已知show()函数是一个类的常成员函数,无返回值,下列表示中正确的是 C (2分)

A.constvoidshow() B.voidshow()const

C.voidconstshow() D.voidshow(const)

10.下列关于静态成员的描述中,正确的是 A (2分)

A.静态成员不属于对象,是类的共享成员 B.静态数据成员要由构造函数初始化

C.静态成员函数只能通过类激活 D.非静态成员函数不能操作静态数据成员

12.下列对常类型的定义中,错误的是 (2分)

A.MyClassconstobj; B.charconst*ptr; C.constint&ref=10;D.voidfun()const;

16.有如下类定义,obj是类D的对象,下列语句中不违反访问控制权限的是  A (2分)

classB{

public:

voidfun1();

private:

voidfun2();

protected:

voidfun3();

};

classD:

publicB{

protected:

voidfun4();

};

A.obj.fun1(); B.obj.fun2(); C.obj.fun3(); D.obj.fun4();

5.若有函数调用fun(x+y,3,min(a,b)),则fun的实参个数为 A (2分)

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

17.下列对析构函数的描述中,正确的是 C (2分)

A.系统不能提供默认的析构函数 B.析构函数必须由用户定义

C.析构函数没有参数 D.析构函数可以设置默认参数

20.C++中,能够被派生类继承的函数是 D (2分)

A.析构函数 B.友元函数 C.构造函数 D.成员函数

19.有如下声明:

MyClass*constptr;,下列描述中,正确的是 B (2分)

A.ptr是一个类对象 B.ptr是一个常量指针

C.ptr指向一个常量 D.ptr是一个指向常量的常指针

13.下列描述中,不是面向对象系统包含的要素的是 D (2分)

A.对象 B.类 C.继承 D.函数

14.下列选项中,istream类对象是 A (2分)

A.cin B.cout C.cerr D.clog

15.可以解决程序中代码量不大,但却被频繁调用的函数的调用效率问题的是 D (2分)

A.友元函数 B.重载函数 C.虚函数 D.内联函数

16.下列格式控制符中,可以设置输出项域宽的是 A (2分)

A.setw B.setfill C.setprecision D.endl

20.在下列函数原型中,可以作为类A构造函数的是 D (2分)

A.voidA(int); B.intA(); C.A(int)const; D.A(int);

8.下列程序段中,横线处应填入的内容是 D (2分)

classMyClass{

public:

MyClass(){count++;}

private:

staticintcount;

};

a      count=10;

A.int B.staticint C.staticMyClass:

:

int D.intMyClass:

:

二、填空题

1.类成员的访问权限分为__公有继承___、_私有继承__和___保护继承__三类。

(2分)

1.类的三种继承方式是___公有继承(public)__、__保护继承(protect)_和__私有继承(private)_。

(2分)

2.下列语句序列执行后输出10,请将划线处的语句补充完整。

classMyClass{

public:

MyClass(intx):

val(x){}

voidPrint();

private :

intval ;

};

void MyClass:

:

Print(){cout<

intmain(){

MyClassobj(10);

obj.Print();

return0;

}

3.下列语句序列执行后输出10,请将划线处的语句补充完整。

(2分)

classMyClass{

public:

MyClass(intx):

___val(x)_____{}

voidPrint(){cout<

private:

intval;

};

intmain(){

MyClassobj(10);

obj.Print();

return0;

}

2.下列语句序列执行后输出10,请将划线处的语句补充完整。

(2分)

classMyClass{

public:

MyClass(intx):

val(x){}

voidPrint(){cout<

private :

intval ;

};

intmain(){

MyClassobj(10);

 obj  Print();

return0;

}

3.有两个类M和C,其中类C定义如下:

classC{public:

Mm;};。

若建立类C的对象object,则对象m和对象object中后被初始化的是对象__object___________。

(2分)

4.下列语句序列执行后输出Hello,请将划线处的语句补充完整。

(2分)

classMyClass{

public:

voidPrint()const{cout<<"Hello";}

};

intmain(){

MyClass*p=newMyClass();

 p-> Print();

return0;

}

5.请在划线处填写正确内容,使类MyClass的复制构造函数的声明完整。

(2分)

classMyClass{

public:

MyClass(const_____MyClass&___obj);

};

4.请在划线处填写正确内容,使类Test的复制构造函数的声明完整。

(2分)

classTest{

public:

Test(const___Test&____obj);

};

6.请在划线处写出MyClass类的析构函数声明。

(2分)

classMyClass{

public:

_____~MyClass();______

};

4.为了解决多继承产生的____二义性__问题,在C++中引入了虚基类。

(2分)

5.派生新类的类称为_____父类______,而派生出的新类称____子类________。

(2分)

6.运算符函数的函数名是由运算符前加关键字____operator____构成的。

(2分)

9.下列语句序列的输出结果是__100_____。

(2分)

classMyClass{

public:

MyClass(intx){cout<

~MyClass(){cout<<0;}

};

intmain(){

MyClassobj1

(1),obj2(obj1),&ptr=obj1;

return0;

}

2.下列语句序列的输出结果是___120000___。

(2分)

classMyClass{

public:

MyClass(intx=0){cout<

~MyClass(){cout<<0;}

};

intmain(){

MyClassarr[3]={MyClass

(1),MyClass

(2)};

return0;

}

10.所有在类内部定义的成员函数都是  inline函数。

(2分)

1.在C++中,___函数重载___是指同一个函数名可以对应多个函数的实现。

(2分)

7.下列语句序列执行后输出Hello,请将划线处的语句补充完整。

(2分)

classMyClass{

public:

voidPrint()const{cout<<"Hello";}

};

intmain(){

MyClass*p=newMyClass();

 p-> Print();

return0;

}

8.运算符函数的函数名是由运算符前加关键字___operator_构成的。

(2分)

9.请在划线处填写构造函数的声明,使得语句Pointp1;创建的p1对象为原点。

(2分)

classPoint{

public:

____Pointp1(intx=0,inty=0);________

private:

intx,y;

};

11.有两个类M和C,其中类C定义如下:

classC{public:

Mm;};。

若建立类C的对象object,则对象m和对象object中后被初始化的是对象__object___。

(2分)

5.有两个类M和C,其中类C定义如下:

classC{public:

Mm;};。

若建立类C的对象object,则对象m和对象object中先被初始化的是对象_____m________。

(2分)

3.已知一个函数的原型是doublefun(doublex);,若要以4.25为实参调用该函数,应使用表达式____fun(4.25)____。

8.设置虚基类的目的是为了解决多继承产生的__菱形继承___问题。

(2分)

9.将一个函数声明为一个类的友元函数必须使用关键字__friend_________。

(2分)

10.派生新类的类称为_____基类__,而派生出的新类称___派生类,又称为子类__________。

(2分)

三、改错题

下列程序中有三个错误,请改正错误(注意不要修改主函数),使程序的输出结果为:

Thepointis(0,1)

Thepointis(3,5)

源文件清单如下:

Line1:

#include

Line2:

classPoint{

Line3:

public:

Line4:

Point(intxx=0,intyy):

x(xx),y(yy){}

Line5:

voidMove(intxOff,intyOff)const{

Line6:

x+=xOff;y+=yOff;

Line7:

}

Line8:

voidPrint()const

Line9:

{cout<<"Thepointis("<

Line10:

private:

Line11:

intx,y=0;

Line12:

};

Line13:

intmain(){

Line14:

Pointp1,p2(2,1);

Line15:

p1.Print();

Line16:

p2.Move(1,4);

Line17:

p2.Print();

Line18:

return0;

Line19:

}

答案:

Line4:

Point(intxx=0,intyy=1):

x(xx),y(yy){}

Line5:

voidMove(intxOff,intyOff){

Line11:

intx,y;

下列程序中有三个错误,请改正错误(注意不要修改主函数),使程序的输出结果为:

Kellyis10yearsold.

Patrickis35yearsold.

源文件清单如下:

Line1:

#include

Line2:

classPerson{

Line3:

public:

Line4:

Person(char*str,int_age=10):

age(_age)

Line5:

{name=newchar[strlen(str+1)];strcpy(name,str);}

Line6:

void~Person(){delete[]name;}

Line7:

voidSetAge(intnum)const{age=num;}

Line8:

voidPrint()const

Line9:

{cout<

Line10:

private:

Line11:

char*name;

Line12:

intage=0;

Line13:

};

Line14:

intmain(){

Line15:

Personp1("Kelly"),p2("Patrick",25);

Line16:

p1.Pr

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2