{ }Student s; //定义对象s s.Imput(); //输入学生信息 s.Set(); //设置学生信息
Teacher t; //定义对象t t.Imput(); //输入教师信息 t.Set(); //设置教师信息
s.Show(); //显示学生信息 t.Show(); //显示教师信息
system(\"PAUSE\"); return 0;
实验结果:
(2) 定义一个抽象类Shape,包含纯虚函数Area()(用来计算面积)和SetShape()(用来重设形状大小)。然后派生出三角形类Triangle类、矩形Rect类、圆Circle类,分别求其面积。最后定义一个Total_Area类,计算这几个形状的面积之和,各形状的数据通过Total_Area类的构造函数或成员函数来设置。编写一个完整的程序。
实验源代码:
//Shape.h: #ifndef SHAPE_H #define SHAPE_H
class Shape //声明抽像类Shape { public: virtual double Area()=0; //纯虚函数Area() virtual void SetShape()=0; //纯虚函数SetShape()
}; #endif //Triangle.h:
#ifndef TRIANGLE_H #define TRIANGLE_H #include\"Shape.h\"
class Triangle:public Shape { private: double E; double H; public: Triangle(){} Triangle(double e,double h):E(e),H(h){}
double Area(){return 0.5*E*H;} void SetShape(); }; #endif //Rect.h: #ifndef RECT_H #define RECT_H #include\"Shape.h\"
class Rect:public Shape { private: double L; double W; public: Rect(){} Rect(double l,double w):L(l),W(w){}
double Area(){return L*W;} void SetShape(); }; #endif //Circle.h:
//声明三角形类Triangle //底 //高
//参数为空的构造函数 //返回三角形面积 //重设三角形的大小 //声明矩形类Rect //长 //宽
//参数为空的构造函数 //返回矩形面积 //重设矩形的大小
#ifndef CIRCLE_H #define CIRCLE_H #include\"Shape.h\"
class Circle:public Shape //声明圆类Circle { private: public: }; #endif //Total_Area.h:
#include //编译预处理命令 #include\"Triangle.h\" #include\"Rect.h\" #include\"Circle.h\"using namespace std; //使用命名空间 #ifndef TOTAL_AREA_H #define TOTAL_AREA_H
class Total_Area //声明类Total_Area { private: public:
Total_Area(double Te=0,double Th=0,double Rl=0,double Rw=0,double Cr=0) Shape *a[3]; //定义抽象类Shape类型的数组指针 Circle(){} //参数为空的构造函数 Circle(double r):R(r){}
double Area(){return 3.1415926*R*R;} //返回圆的面积 void SetShape(); //重设圆的大小 double R; //半径
//分配空间
delete a[0]; delete a[1]; delete a[2];
{ }
~Total_Area() //析构函数 {
a[0]=new Triangle(Te,Th); a[1]=new Rect(Rl,Rw); a[2]=new Circle(Cr);
}; #endif
}
void SetShape() //设置形状的大小 { }
double GetTriangle(){return a[0]->Area();} double GetRect(){return a[1]->Area();} double GetCircle(){return a[2]->Area();}
double GetArea(); //返回三个形状的面积和
a[0]->SetShape(); a[1]->SetShape(); a[2]->SetShape();
//Triangle.cpp: #include\"Triangle.h\"
#include //编译预处理命令 using namespace std; //使用命名空间void Triangle::SetShape() { }
//Rect.cpp: #include\"Rect.h\"
#include //编译预处理命令 using namespace std; //使用命名空间void Rect::SetShape() { }
//Circle.cpp: #include\"Circle.h\"
#include //编译预处理命令 using namespace std; //使用命名空间void Circle::SetShape() { }
//Total_Area.cpp:
cout<<\"请输入重设的圆的半径:\"<>R;cout<<\"请输入重设的矩形的长和宽:\"<>L>>W;cout<<\"请输入重设的三角形的底和高:\"<>E>>H;#include\"Total_Area.h\"
double Total_Area::GetArea() { }
//main.cpp:
#include //编译预处理命令 #include\"Shape.h\" #include\"Triangle.h\" #include\"Rect.h\" #include\"Circle.h\" #include\"Total_Area.h\"using namespace std; //使用命名空间
int main() //主函数main() { }
实验结果:
system(\"PAUSE\"); return 0;
s.SetShape(); //调用重设形状大小函数 cout<<\"重设的三角形的面积为:\"<cout<<\"输入的三角形的底和高,矩形的长和宽,圆的半径为:2和4,3和5,6\"<cout<<\"这三个形状面积之和为:\"<Area()+a[1]->Area()+a[2]->Area();