}
四、设计类(15分)
假定实际问题中需要计算几何形体(如:
圆、三角形、球、圆锥等等)的(表)面积和体积。
请用抽象基本类设计一个满足此需求的根类,并派生一个关于圆的派生类。
classShape
{
public:
virtualfloatArea()=0;
virtualfloatVolume()=0;
};
classCircle:
publicShape
{
private:
flaotRadius;
public:
Circle(flaotr){Radius=r;}
virtualfloatArea()
{return3.1415926*Radius*Radius;}
virtualfloatVolume()
{return0;}
};
五、综合(15分)
实现一个学生类Student类,对学号、姓名、三门课的成绩进行管理。
(1)类应能够单独设置和获取三门课的成绩;
(2)可以计算平均成绩;(3)重载插入符以便进行输出;(4)写一段代码测试你的类,其中要用到动态内存申请分配。
解:
#include
usingnamespacestd;
classStudent
{private:
intm_No;stringm_Name;
floatm_English;floatm_Analysis;floatm_Algebra;
public:
voidSetEnglishScore(floataScore){m_English=aScore;}
voidSetAnalysisScore(floataScore){m_Analysis=aScore;}
voidSetAlgebraScore(floataScore){m_Algebra=aScore;}
floatGetEnglishScore()const{returnm_English;}
floatGetAnalysisScore()const{returnm_Analysis;}
floatGetAlgebraScore()const{returnm_Algebra;}
floatAverageScore()
{return(m_English+m_Analysis+m_Algebra)/3.0;}
public:
Student(intaNo,stringaName)
{m_No=aNo;m_Name=aName;}
Student(intaNo,stringaName,floataEnglish,floataAnalysis=0,floataAlgebra=0):
m_No(aNo),m_Name(aName)
{m_English=aEnglish;m_Analysis=aAnalysis;m_Algebra=aAnalysis;}
friendostream&operator<<(ostream&out,Student&s)
};
ostream&operator<<(ostream&out,Student&s)
{out<<'(';
cout<<cout<<')';}
voidClassStudentDemoTwo()
{Studentsa;Studentsb(10,"abcde");Studentsc(20,"xyz",95);
cout<cout<<"newaObject"<Student*sp=newStudent(111,"new",90,95,100);
cout<<*sp<deletesp;
cout<<"newedObjectisdeleted"<