};
voidmain()
{Baseobj1,*p;Derived1obj2;Derived2obj3;
p=&obj1;p->abc();
p=&obj2;p->abc();
p=&obj3;p->abc();
obj1.abc();obj2.abc();obj3.abc();
}
5、#include
classparent_class
{intprivate1,private2;
public:
parent_class(intp1,intp2)
{private1=p1;private2=p2;}
intinc1()
{return++private1;}
intinc2()
{return++private2;}
voiddisplay()
{cout<<"private1="<};
classderived_class:
privateparent_class
{intprivate3;
parent_classprivate4;
public:
derived_class(intp1,intp2,intp3,intp4,intp5):
parent_class(p1,p2),private4(p3,p4)
{private3=p5;}
intinc1()
{returnparent_class:
:
inc1();}
intinc3()
{return++private3;}
voiddisplay()
{parent_class:
:
display();private4.display();
cout<<"private3="<};
voidmain()
{derived_classd1(17,18,1,2,-5);
d1.inc1();
d1.display();
}
6、#include
classA
{public:
A(intn){i=n;cout<<“初始化i的值为:
”<~A(){cout<<“释放A的对象。
”<<’\n’;}
intget_i(){returni;}
private:
inti;
};
classB:
publicA
{public:
B(intn,intm):
A(n){j=m;cout<<“初始化j的值为:
”<~B(){cout<<“释放B的对象。
”<<’\n’;}
intget_j(){returnj;}
private:
intj;
};
voidmain()
{Bobj(1,2);
cout<<“创建了一个B的对象。
值为:
”<}
7、#include
classA
{public:
virtualvoidact1();
voidact2(){act1();}
};
voidA:
:
act1(){cout<<"A:
:
act1()called."<classB:
publicA
{public:
voidact1();
};
voidB:
:
act1(){cout<<"B:
:
act1()called."<voidmain()
{Bb;
b.act2();
}
8、指出下列程序中的错误,并说明理由
classCOMPLEX
{public:
COMPLEX(doubler=0,doublei=0);
COMPLEXoperator-(constCOMPLEX&other);
COMPLEXoperator=(constCOMPLEX&other);
private:
doublereal=0,image=0;
};
voidmain()
{floatx;
COMPLEXy(10,20),z(2,3),sum;
sum=x-y;
sum=sum-z;
sum--;
}
四、编程题:
(20分,每题10分)
1.使用虚函数编程求球体和圆柱体的体积及表面积。
由于球体和圆柱体都可以看作由圆继承而来,所以可以定义圆类circle作为基类。
在circle类中定义一个数据成员radius和两个虚函数area()和volume()。
由circle类派生sphere类和column类。
在派生类中对虚函数area()和vlume()重新定义,分别求球体和圆柱体的体积及表面积。
补充指定部分。
#include
constdoublePI=3.14;
classcircle
{public:
circle(doubler){radius=r;}
//补充此处
protected:
doubleradius;
};
classsphere:
publiccircle
{public:
sphere(doubler):
circle(r){}
doublearea(){return4.0*PI*radius*radius;}
doublevolume()
{return4.0*PI*radius*radius*radius/3.0;}
};
classcolumn:
publiccircle
{//补充此处
};
voidmain()
{inta,b,c;
circle*p;
cout<<"输入球体半径"<cin>>a;
spheresobj(a);
p=&sobj;
cout<<"球体的体积="</补充此处
cout<<"球体的表面积="</补充此处
cout<<"输入圆柱体的半径,高"<cin>>b>>c;
columncobj(b,c);
p=&cobj;
cout<<"圆柱体的体积="<volume()<cout<<"圆柱体的表面积="<area()<}
2.使用成员函数或友员函数编程序重载运算符“+”,使该运算符能实现两个字符串的连接。