c++期末复习.docx

上传人:b****5 文档编号:6015908 上传时间:2023-01-03 格式:DOCX 页数:15 大小:24.66KB
下载 相关 举报
c++期末复习.docx_第1页
第1页 / 共15页
c++期末复习.docx_第2页
第2页 / 共15页
c++期末复习.docx_第3页
第3页 / 共15页
c++期末复习.docx_第4页
第4页 / 共15页
c++期末复习.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

c++期末复习.docx

《c++期末复习.docx》由会员分享,可在线阅读,更多相关《c++期末复习.docx(15页珍藏版)》请在冰豆网上搜索。

c++期末复习.docx

c++期末复习

一、类和对象

1、下列函数的说明中,错误的说明是()。

A、int F(int x,int y=2,int z=3); B、int F(int x,int y,int z);

C、int F(int x,int y,int z=3);D、int F(int x=1,int y=2,int z);

2、定义析构函数时,正确的说法是(   )。

A.其名与类名完全相同         B.无形参,也不可重载

C.返回类型是void类型        D.函数体中必须有delete语句

3、如果类A被说明成类B的友元,则(   )。

A.类A的成员即类B的成员B.类B的成员即类A的成员

C.类A的成员函数可以访问类B的成员D.类B一定是类A的友元

4、静态成员函数没有()

A.返回值B.自动传递this指针C.指针参数D.返回类型

5.下列各项中符合函数重载必须满足的条件的是()。

A、必须有不同的参数个数  B、对应的参数类型必须不相同

C、A和B必须同时满足  D、A和B只要满足一个即可。

6、给出下面程序:

#include   “iostream.h”

class MyClass{  

intx;

public:

MyClass(int a){x = a;}

Display(){cout<

(1)MyClass类中的x的访问权限(访问控制属性)是什么?

x可在main函数中直接访问吗?

(2)系统什么时候调用MyClass类的构造函数?

7、classw

{protected:

intA;

(1)A标识所在行定义的函数是什么函数?

public:

w(intA1){A=A1;}

w(w&K){A=K.A;}//A

(2)i是w类的什么数据成员?

在w类没有

staticinti;生成对象之前是否可以访问i?

};

intw:

:

i=8;

8、#include

voidf(intx,floaty)

{cout<

voidf(intx=9)

{cout<

voidf(intx,inty)

{cout<

voidmain()

{f();

f(3,4.5);f(3);}

9、#include

  classQQQ

{ private:

floatA,B;

  public:

 QQQ(floati,floatj){A=i,B=j;cout<<"C\n";}

   ~QQQ(){cout<<"D\n";}

  voidprint(){cout<

voidmain()

  {QQQa1(20,32);QQQ*s=newQQQ(6,7);

   a1.print();}

10、下列函数的说明中,正确的说明是()。

A、int f(int x,int y=2,int z); B、intf(int x=1,int y=2,int z);

C、int f(int x,int y=2,int z=3);D、int f(int x=1,int y,int z);

11、下面说法正确的是()。

A、生成对象时调用析构函数。

B、定义类时必须写出该类的构造函数。

C、调用构造函数时一般在主函数中明确写出调用格式。

D、析构函数不可以重载。

12、假设A为一个类,则该类的拷贝构造函数的声名语句为()。

A、A&(Ab) B、A(A&b)C、A(Ab) D、A&(A*b)

13.有关类的说法不正确的是()

A、类是一种用户自定义的数据类型

B、只有类中的成员函数才能存取类中的私有数据

C、在类中,如果不作特别说明,所有的数据均为私有数据类型

D、在类中,如果没有定义一个构造函数,则系统自动提供一个默认的构造函数。

14.已知类AA的成员函数为voidfun(inta,intb),下面哪个函数能够作为它的重载函数()。

A、voidfun(inta=0,intb)B、voidfun(inta,intb=0)

C、voidfun(inta)D、voidfun(intm,intn)

15、给出下面程序:

(1)#include   “iostream.h”

(1)数据成员no可以通过Student类的对象直

class Student{  接访问吗?

intno;

public:

(2)在类中必须自定义至少一个构造函数吗?

Student(int num){no = num;}为什么?

Display(){cout<

16、classPoint

{protected:

intx,y;

(1)A、B标识所在行定义的函数分别是什么函数?

public:

Point(intx1,inty1)//A

{x=x1;y=y1}

(2)C标识的函数是Piont类的什么函数?

Point(Point&p)//B它是否可以访问Point类的私有成员?

{x=p.x;y=p.y}

friendintfun();};//C

17、#include

voidf(intx,floaty,intz)

{cout<

voidf(intx=7){cout<

voidf(intx,inty){cout<

voidmain()

{f();f(3);f(4,6);f(3,2.1,5);}

18、一个函数功能不太复杂,但要求被频繁调用,可以设计为( )

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

19、类的析构函数是在( )调用的。

 

A.类创建时 B.创建对象时 C.删除对象时 D.不自动调用 

3、下列不是描述类的成员函数的是( )

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

6、关于静态数据成员,错误的是()

A.用static关键声明静态数据成员。

B.静态数据成员具有静态生存期。

C.静态数据成员必须通过对象名调用。

D.对于任何对象实例,静态数据成员属性值是相同的。

1、根据程序,回答下面问题。

classPoint

(1)protected关键字有何作用?

{protected:

它与私有类型成员的区别是什么?

intx,y;

public:

Point()

(2)系统什么时候调用构造函数?

{x=0;y=0;}};

4、根据程序,回答下面的问题。

classClock

{pvivate:

inth,m,s;

public:

Clock(){h=0;m=0;s=0;};

Clock(Clock&c)//A

{h=c.h;m=c.m;s=c.s;};

~Clock(){}

friendvoidDispTime();//B};

(1)标识行A定义的函数是什么函数?

 

(2)标识行B定义的函数是Clock类的什么函数?

它是否可以访问Clock类的私有成员?

1、#include

usingnamespacestd;

intArea(intx,inty)

{returnx*y;}

doubleArea(intx=10)

{return3.14*x*x;}

程序运行结果:

voidmain()

{

cout<

cout<

cout<

}

1、设计一个三角形类Triangle,其中含有数据成员L和H,分别表示三角形的底边长与高,使用类的成员函数Area计算三角形的面积,并完成在main函数中的相应调用。

(10分)

1、设计一个矩形类rectangle,其中含有数据成员L和W,分别表示矩形的长与宽,使用类的成员函数Area和Girth计算矩形的面积和周长,并完成在main函数中的相应调用。

(10分)

1、声明一个Circle类,有数据成员radius(圆的半径),定义成员函数GetRadius()实现由键盘输入圆的半径,成员函数Area()实现计算并输出圆的面积,同时完成在main函数中的相应调用。

二、继承

4、给出程序,在main函数中写出如下选项,不合法的是()。

#include“iostream.h”

classMM

{protected:

intb;

public:

MM(inta1=0){b=a1;}

voidshow(){cout<

classkk:

publicMM

{public:

voidshow(){MM:

:

show();}};

A、MMM(9);B、kkk;C、kkk;D、kkk;

M.show();k.b=1;k.show();k.MM:

:

show();

3、classm{

public:

intx;

(1)在这个程序中m什么类?

};

classm1:

virtualpublicm//A

(2)如A、B标识所在行没有virtual关键字,

{public:

则m3类生成的对象中有几个x?

};

classm2:

virtualpublicm//B

{public:

};

classm3:

publicm1,publicm2

{public:

};

5、可以在main函数中用p.a的形式访问派生类对象p的基类成员a,其中a应是()。

A、私有继承的公有成员B、公有继承的私有成员

C、公有继承的保护成员D、公有继承的公有成员

2、说出C++中两种的继承方式,简述这两种继承方式下基类成员在派生类中的使用规则。

2、Person类描述人这一概念,其中数据成员name表示学生的姓名,age表示年龄。

Student类描述学生这一概念,它是Person的派生类,Student类中新增数据成员classname表示学生的级别名称。

请用C++代码描述这两个类,并用Student类的友元函数Display实现学生的姓名、年龄和级别名称的输出,不必书写main函数的实现。

(10分)

2、在类的继承与派生过程中,类的继承方式有几种,分别是什么?

基类的构造函数和析构函数是否可以被派生类继承?

3、classK

(1)在这个程序中K是什么类?

{public:

voidf(){cout<<"ok";};

classK1:

virtualpublicK//A

(2)A、B标识所在行的virtual关键字的

{public:

voidfn(){cout<<"ok1";};作用是什么,如果没有它,K3类生成的对

classK2:

virtualpublicK//B象中有几个f()?

{public:

voidfn(){cout<<"ok2";};

classK3:

publicK1,publicK2

{public:

};

2、Point类描述点这一概念,其中数据成员x和y表示点的横坐标和纵坐标。

Circle类描述圆这一概念,它是Point的派生类,Circle类中新增数据成员radius表示圆的半径。

请用C++代码描述这两个类,并用Circle类的友元函数Display输出圆的圆心的横、纵坐标和圆的半径,写出main函数的实现。

(10分)

5、C++ 类体系中,不能被派生类继承的有 ( )

A. 静态数据成员 B. 构造函数 

C. 虚函数 D. 静态成员函数 

2、根据程序,回答下面的问题。

classA

{private:

intx;

protected:

inty;

public:

intz;

voidshowinfo();}

classB:

privateA

{}

(1)以上继承属于哪种继承方式?

x在派生类B中可以访问吗?

 

(2)y,z在派生类中分别以什么身份出现?

3、根据程序,回答下面的问题。

classBB

{public:

intx;};

classBB1:

virtualpublicBB//A

{public:

};

classBB2:

virtualpublicBB//B

{public:

};

classAA:

publicBB1,publicBB2

{public:

};

(1)利用virtual修饰的类叫做什么类?

 

(2)如A、B标识所在行没有virtual关键字,则AA类生成的对象中有几个x?

2、由上题的Circle类派生Cylinder(圆柱体)类,新增数据成员high表示圆柱的高,重新实现派生类(Cyliner)的构造函数,新增成员函数GetData()由键盘输入圆的半径及圆柱的高,定义Cylinder类的友元函数Display()实现圆柱体体积的计算与输出。

不必书写main函数的实现。

4、给出程序,在main()函数中写出如下选项,不合法的是()

#include

usingnamespacestd;

classB0

{protected:

inta0;

public:

B0(){a0=0;}

voidprint(){cout<

classB1:

publicB0

{public:

voidprint(){B0:

:

print();}};

A、B0b0();B、B1b1;C、B1b1;D、B1b1;

b0.print();b1.print();b1.B0:

:

print();b1.a0=9

2、写出程序的运行结果

#include

classbase

{public:

base(){cout<<”constructingbaseclass\n”;}

~base(){cout<<”destructingbaseclass\n”;}};

classsubs:

publicbase

{public:

subs(){cout<<”constructingsubclass\n”;}

~subs(){cout<<”destructingsubclass\n”;}};

voidmain()

{subss;}

2、#include

usingnamespacestd;

classClock

{public:

Clock()

{cout<<"clock的构造函数"<

~Clock()

{cout<<"clock的析构函数"<

classDate:

publicClock

{public:

Date()

{cout<<"Date构造函数"<

~Date()

{cout<<"Date析构函数"<

voidmain()

{Datedate1;}

三、虚函数

7.通过(   )调用虚函数时,采用动态束定。

A.对象指针        B.对象名C.成员名限定     D.派生类名

3、类Shape用来描述各种形状的抽象类,其中纯虚函数Area是提供计算各种形状面积的接口;类Circle描述圆这一形状,半径radius和计算面积的虚函数Area是其成员;类Rect描述矩形这一形状,长width、高height和计算面积的虚函数Area是其成员;请用C++描述这三个类,并在main()函数中通过Shape类的接口实现圆和矩形面积的计算。

(12分)

3、如果一个类至少有一个纯虚函数,那么就称该类为()。

A、抽象类B、虚基类C、派生类D、以上都不对

4、对于类定义 

class A

{ public:

 virtual void func1( ){ } 

void func2( ){ } }; 

class B:

public A

{ public:

 void func1( ){cout<< ″ class B func 1 ″ <

virtual void func2( ){cout<< ″ class B func 2 ″ <

下面正确的叙述是 ( ) 

A、 A:

:

func2( ) 和 B:

:

func1( ) 都是虚函数 

B、 A:

:

func2( ) 和 B:

:

func1( ) 都不是虚函数 

C、 B:

:

func1( ) 是虚函数,而 A:

:

func2( ) 不是虚函数 

D、 B:

:

func1( ) 不是虚函数,而 A:

:

func2( ) 是虚函数 

3、类K是用来描述各种计算的抽象类,其中纯虚函数Count是提供计算各种计算方式的接口;类B是描述汽车类,行驶时间h、时速s和计算行使公里数的虚函数Count是其成员,类G是描述学生成绩类,数学成绩s、语文成绩y和计算平均成绩的虚函数Count是其成员,请用C++描述这三个类,并在main()函数中通过K类的接口实现客车行驶公里数和学生平均成绩的计算。

(12分)

7、调用一成员函数时,使用动态绑定的情况是()

A.通过对象调用一虚函数 B.通过指针或引用调用一虚函数

C.通过对象调用静态函数 D.通过指针或引用调用一静态函数

9.()是指同样的消息被不同类型的对象接收时导致不同的行为。

A.重载  B.继承C.多态D.抽象

3、类TeacherPay是用于计算教师月薪的抽象类,其中数据成员有教师编号(tNo)及月薪总额(tAccumpay),其中Pay()是提供计算教师工资的纯虚函数;类OuterTeach描述计算外聘教师的月薪,继承自类TeacherPay,月薪总额计算方法tAccumpay=hourlyRate(每小时薪金)*workHour(月工作小时数),InnerTeach类描述计算校内教师月薪,也继承自类TeacherPay,月薪总额计算方法tAccumpay=basePay(基本工资)+prize(奖金),请用C++描述这三个类,并在main()函数中通过TeacherPay类的接口实现外聘教师和校内教师月薪的计算

四、运算符重载

1、请根据程序的输出结果完成填空。

#include

classshu

{protected:

intval;

public:

shu(inti=2){val=i;}

________________+(_______________){returnval+T.val;}};

voidmain()

{shus1(78),s2;

cout<

程序输出结果是:

80

1、请根据程序的输出结果完成填空。

#include

classK

{protected:

intval;

public:

number(inti){val=i;}

________________*(K&k){________________;}

};

voidmain()

{Kk1(3);k2(8)

cout<

程序输出结果是:

24

1、请根据程序的输出结果完成填空。

#include

usingnamespacestd;

classcomplex//复数类声明

{private:

doublereal;

doubleimag;

public:

complex(doubler=0,doublei=0)

{real=r;imag=i;}

+(cc)

{returncomplex(cc.real+real,cc.imag+imag);}

voiddisplay()

{cout<

voidmain()//主函数

{complexc1(5,4);complexc2(2,8);complexc3;

c3=c1+c2;

c3.display();}

程序输出结果是:

7+12i

五、IO流

8、cout是I0流库预定义的()。

A、类 B、对象 C、包含文件 D、常量

6.对于语句cout<

A、“cout”是一个输出流对象B、“endl”的作用是输出回车换行

C、“x”是一个变量D、“<<”称作提取运算符

8、cin是I0流库预定义的()

A.常量  B.类C.包含文件 D.对象

六、文件流

2、C:

\k.txt文件中已存放着字符串abcde,下面程序在屏幕上输出C:

\k.txt文件中的所有字符。

#include"iostream.h"

#include"fstream.h"

voidmain()

{ifstreamm("c:

\\k.txt",_________________);

chars[5];___________________;

___________________;m.close();}

2、C:

\k.txt文件中已存放着字符串abcdefgh,下面程序在屏幕上输出C:

\k.txt文件中的前5个字符。

#include"iostream.h"

#include"fstream.h"

voidmain()

{ifstreamk(_____________,ios:

:

in);

chars[6];

__________________;cout<

________________;}

2、下面的程序使用I/O流在当前目录下test.txt文件中,追加字符“欢迎您”,按要求完成程序填空。

#include

#include

voidmain()

{ofstreamfile1(______________,ios:

:

app);

file1___________________;

___________________;}

七、模板

3、#include

templatevoidSwap(SomeType&a,SomeType&b)

{SomeTypetmp;

tmp=a;a=b;b=tmp;}

templat

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

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1