/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:
* 作 者: 王明星
* 完成日期: 2012 年 5 月 15日
* 版 本 号:
* 对任务及求解方法的描述部分
* 输入描述:
* 问题描述:类中的纯虚函数
* 程序头部的注释结束
*/
#include <iostream>
using namespace std;
class CSolid
{
public:
virtual double area()=0;
virtual double volume()=0;
};
class CCube:public CSolid
{
public:
CCube(double l=0){length=l;}
double area(){return length*length*6;}
double volume(){return length*length*length;}
private:
double length;
};
class CBall:public CSolid
{
public:
CBall(double r=0){radius=r;}
double area() {return 4*3.1415*radius*radius;}
double volume(){return (4*3.1415*radius*radius*radius)/3;}
private:
double radius;
};
class CCylinder:public CSolid
{
public:
CCylinder(double r=0,double h=0):radius(r),height(h){}
double area(){return (2*radius*radius+2*3.1415*radius*height);}
double volume() {return 3.1415*radius*radius*height;}
private:
double radius,height;
};
int main()
{
CSolid *p;
CCube r1(2);
CBall t1(2);
CCylinder q1(2,3);
p=&r1;
cout<<"正方体的表面积为:"<<p->area()<<endl;
cout<<"正方体的体积为:"<<p->volume()<<endl;
p=&t1;
cout<<"球体的表面积为:"<<p->area()<<endl;
cout<<"球体的体积为:"<<p->volume()<<endl;
p=&q1;
cout<<"圆柱体的表面积为:"<<p->area()<<endl;
cout<<"球体的体积为:"<<p->volume()<<endl;
system("pause");
return 0;
}
上机感言:好一个抽象基类呀!!