2. 当建立一个新对象时,程序自动调用 ________ 。
3. 定义 ________ 函数时,应在参数个数或参数类型上有所不同。
4. 类是用户定义的类型,具有 ________ 称作对象。
5. 使用指向对象的指针来标识类的成员,则必须使用的运算符是 ________ 。
6. 拷贝初始化构造函数使用 ________ 来初始化创建中的对象。
7. 在一个类中可以对一个操作符进行 ________ 重载。
8. 在 c++ 中有二种参数传递方式: ________ 。
9. 多态性通过 ________ 来实现的。
10. 使用空的虚函数可以保证基类到派生类建立起一条 ________ ,使派生类通过虚函数机制正确存取虚函数。
三、完成程序题 ( 每小题 5 分,共 20 分 )
1. 在下面程序的底画线处填上适当的字句,使该程序执行结果为 10 。
#include
class base{int x;
public :
________ ∥为 x 置值
________ ∥取 x 值
};
void main()
{ base test;
test.init(3);
cout<}
2. 在下列程序的底画线处填上适当的字句,完成类中成员函数的定义。
#include
class box{ private ∶
int color;int upx,upy;int lowx,lowy;
public :
friend int same - color(line a,box b);
________ set - color(int c){color=c;}
void define - box(int x1,int y1,int x2,int y2){upx=x1;upy=y1;}
};
class line{ private:
int color;int startx,starty;int len;
public:
friend - int same - color(line a,box b);
________set - color(int c){color=c;}
void define - line(int x,int y){startx=x;}
};
int same - color(line a,box b)
{if(a.color= =b.color)
return 1;
return 0;}
3. 在下面程序的底画线处填上适当的字句,完成程序。
#include
class a{
public ∶ void f(int i){cout<void g(){cout<< ”\ n ” ;}
};
class ________{
public ∶ void h(){cout<< ” h \ n ” ;}
a ∶∶ f;
};
void main()
{ b d1;
d1.f(6);
________.h();
}
4. 在下列程序的空格处填上适当的字句,使输出为: 0 , 7 , 5 。
#include
#include
class magic{
double x;
public ∶
________(double d=0.00) ∶ x(fabs(d)){}
magic operator+(magic c){return magic(sqrt(x*x+c.x*c.x));}
friend ostream & operator<<(ostream & os,magic c){return os<};
void main()
{
________;
cout<}
四、综合应用题 ( 共 20 分 )
1. 分析下列程序可能的输出结果。 ( 满分 8 分 )
#include
class base{
public ∶
virtual int func() {return 10;}
};
class derived ∶ public base{
public ∶
int func() {return 200;}
};
void main()
{derived d;
base & b=d;
cout<cout<}
2. 下列 shape 类是一个表示形状的抽象类, area() 为求图形面积的函数, total() 则是一个通用的用以求不同形状的图形面积总和的函数。请从 shape 类派生三角形类 (triangle) 、矩形类 (rectangle) ,并给出具体的求面积函数。给出 shape,total 的定义如下所示。 ( 满分 12 分 )
class shape{
public ∶
virtual float area()=0