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