}
3有如下类声明:
classMyClass
{
inti。
private:
intj。
protected:
intk。
public:
intm,n。
}。
其中,私有成员的数量为_____________。
4有如下程序:
#include
usingnamespacestd。
classONE
{
public:
virtualvoidf(){cout<<"l"。
}
}。
classTWO:
publicONE
{
public:
TWO(){cout<<"2"。
}
}。
classTHREE:
publicTWO
{
public:
virtualvoidf(){TWO:
:
f()。
cout<<"3"。
}
}。
intmain()
{
ONEaa,*p。
TWObb。
THREEcc。
p=&cc。
p->f()。
return0。
}
执行上面程序的输出是_____________。
5有如下程序:
#include
usingnamespacestd。
classPARENT
{
public:
PARENT(){cout<<"PARENT"。
}
}。
classSON:
publicPARENT
{
public:
SON(){cout<<"SON"。
}
}。
intmain()
{
SONson。
PARENT*p。
p=&son。
return0。
}
执行上面程序的输出是_____________。
6若以非成员函数形式,为类Bounce重载“!
”运算符,其操作结果为一bool型数据,则该运算符重载函数的原型是_____________。
7下面是复数类complex的定义,其中重载的运算符“+”的功能是返回一个新的复数对象,其实部等于两个操作对象实部之和,其虚部等于两个操作对象虚部之和;请补充完整:
classcomplex
{
doublereal。
//实部
doubleimag。
//虚部
public:
complex(doubler,doublei):
real(r),imag(i){}
complexoperator+(complexa)
{returncomplex(_____________)。
}
}。
8已知一个函数模板定义为
templateT1,typenameT2>
T1FUN(T2n){returnn*5.0。
}
若要求以int型数据7为函数实参调用该模板函数,并返回一个double型数据,则该调用应表示为_____________。
9.设有数组和指针变量定义为:
inta[2][3]={{1,2},{3,4,5}},*p=&a[0][2];则表达式*(p+1)的值为:
。
10.有字符数组和字符指针定义:
chars1[]=”string”,chars2[]=”char”;char*constps=s1;则使用指针ps进行操作时,可以改变ps,但不能改变ps。
11.设Cat是已定义的类,整型变量a是Cat类的公有成员变量,p是Cat类的对象指针,且已指向Cat类的对象c,则用指针p给整型成员变量a赋值5的语句为:
。
12.在C++语言中,运算符可以重载,运算符重载实质上就是函数的重载,运算符重载实现的多态性属于:
。
13.在C++语言中,运算符可以重载,运算符重载实质上就是函数的重载,设后置运算符“++”在类A的定义中被重载为成员函数,则对A类对象a作运算a++,与该运算表达式等价的函数调用形式为:
。
14.当保护继承时,基类的成员在派生类中成为保护成员,不能通过派生类的对象来直接访问该成员。
15.在类中,____________成员为类的所有对象所共享。
16.如果使用数组名作为函数参数,形实结合时,传递的是__________。
17.有如下定义:
classMA
{
intvalue。
public:
MA(intn=0):
valut(n){}
}。
MA*ta,tb。
其中MA类的对象名标识符是_____________。
18.若将一个二元运算符重载为类的成员函数,其形参个数应该是________个。
19.有如下程序:
#include
usingnamespacestd。
classDA{
intk。
public:
DA(intx=1):
k(x){}
~DA(){cout<}
}。
intmain(){
DAd[]={DA(3),DA(3),DA(3)}。
DA*p=newDA[2]。
delete[]p。
return0。
}
这个程序的输出结果是____________。
20.C++语言中的多态性分为编译时的多态性和__________时的多态性。
三、简答题。
1.什么叫做友元函数,什么叫做友元类?
2.什么叫做多态性,面向对象的多态性可以分为哪四类?
3.什么叫做作用域?
C++中有哪几种类型的作用域?
4.对比简述C语言中函数内静态局部变量与C++中类的静态成员变量的特点。
5.简述用虚函数实现动态多态性的三个关键之处。
6.什么是内联函数,它有哪些特点?
7.列出拷贝构造函数被调用的三种情况。
8.比较类的三种继承方式public、protected、private之间的差别。
9.什么是虚基类?
有何作用?
10.什么是编译时的多态?
具体包括哪些类型?
11.函数模板与函数重载有哪些区别?
12.构造函数与析构函数有什么作用?
四、综合编程题。
1.函数编程:
定义一函数模板swap,它能实现x、y值的交换,在main函数中用任意两个整数、两个浮点数分别使用这个函数模板。
2.函数编程:
定义一函数voidContraryStr(char*str),它能实现字符串的逆序输出,在main函数中用任意字符串测试该函数。
3.类编程:
定义一个表示工人的类Worker,有两个普通数据成员工龄age和工资pay,有一个静态成员人数sum;定义一个有二个参数的构造函数,给age和pay赋值,令sum++;给sum初始化为0,定义一个静态成员函数getsum,用于获得sum的值;在main函数中以不同的方式定义二个工人对象,分别用二个对象和类名3种方式调用getsum函数并输出相应人数。
4.派生类和虚函数编程:
(1)定义一个抽象类Shape,并且提供二个纯虚函数:
计算并返回面积函数reArea及计算并返回体积函数reVolume。
(2)由Shape类派生Cube(正方体)类,它包括私有数据成员length(边长),还包含构造函数和两个纯虚函数的实现。
(3)由Shape类派生Ball(球形)类,它包括私有数据成员radius(半径),也包含构造函数和两个纯虚函数的实现。
(注:
球表面积公式=4πR2,球体积公式=(4π/3)R3)。
(4)在main函数中创建矩形类、球类对象存入一个shape类指针数组中,通过for循环将数组中各类图形的面积及体积输出。
(30分)
5.运算符重载编程:
(1)设计一个简单分数类Fenshu,其包含两个整数的类数据成员分子fenzi、分母fenmu,定义并实现一个有两个整数作参数的构造函数,并定义一个普通成员函数show(),它能以“fenzi/fenmu”格式输出分数;
(2)用成员函数方式重载+运算符,用友元函数方式重载-运算符,实现分数类