问题描述:
(1)创建头文件Container.h,该文件包含抽象基类Container的声明, 该基类含有纯虚函数表面积函数surface()和体积函数volume(),数据成员double a, b, c;
(2)创建头文件Sphere.h,包含#include “Container.h”,声明Container的派生类Sphere;创建源文件Sphere.cpp,给出其表面积函数surface()和体积函数volume()的定义;
(3)创建头文件Cylinder.h,包含#include “Container.h”,声明Container的派生类Cylinder;创建源文件Sphere.cpp,给出其表面积函数surface()和体积函数volume()的定义;
(4)创建头文件Cube.h,包含#include “Container.h”,声明Container的派生类Cube;创建源文件Cube.cpp,给出其表面积函数surface()和体积函数volume()的定义。
(5)创建源文件main.cpp,包含#include “Sphere.h”、#include “Cylinder.h”和#include “Cube.h” ,在主函数中计算几种图形的表面积和体积,并输出结果。
多文件编程要注意需要声明和定义两个文件实现要求(这里.h文件实现声明,.c文件进行定义)
这里只给出前面两个后面以此类推(不会的话问评论区):
Container.h文件
//这里是Container.h头文件定义
#ifndef _CONTAINER_H_
#define _CONTAINER_H_
class Container{
protected:
double a,b,c;
public:
virtual double surface()=0;
virtual double volume()=0;
};
#endif
Container.c文件
//由于这是基类则不需要定义其成员函数
#include "Container.h"
Sphere.h文件
#ifndef _SPHERE_H_
#define _SPHERE_H_
#include "Container.h"
class Sphere:public Container{
protected:
double r;
public:
Sphere(double a){
r=a;
}
double surface();
double volume();
};
#endif
Sphere.c文件
#include "Sphere.h"
#include <iostream>
using namespace std;
double Sphere::surface(){
cout<<"surface:"<<4*3.14*r*r<<endl;
return 4*3.14*r*r;
}
double Sphere::volume(){
cout<<"volume:"<<4*3.14*r*r*r/3<<endl;
return 4*3.14*r*r*r/3;
}
主函数main.c
#include <iostream>
#include "Container.h"
#include "Sphere.h"
int main() {
Sphere qiu(1);
qiu.surface();
qiu.volume();
return 0;
}