01./* 02.* 程式的著作權和版本聲明部分 03.* Copyright (c)2013, 煙台大學電腦學院學生 04.* All rightsreserved. 05.* 檔案名稱: CSolid.cpp 06.* 作 者:趙冠哲 07.* 完成日期:2013年5月31日 08.* 版本號碼: v1.0 09.* 輸入描述: 10.* 問題描述: 11.*/ #include <iostream>using namespace std;#define PI 3.1415926class CSolid//聲明抽象基類shape{public:virtual double area()=0;//純虛函數virtual double volume()=0;//純虛函數};class CCube:public CSolid//聲明CCube類{public:CCube(double l):length(l){}virtual double area(){return 6*length*length;}virtual double volume(){return length*length*length;}private:double length;};class CBall:public CSolid//聲明CBall類{public:CBall(double r):radius(r){}virtual double area(){return 4*PI*radius*radius;}virtual double volume(){return PI*radius*radius*radius*4/3;}private:double radius;};class CCylinder:public CSolid//聲明CCylinder類{public:CCylinder(double r,double h):radius(r),heigth(h){}virtual double area(){return 2*2*PI*radius+2*PI*radius*heigth;}virtual double volume(){return PI*radius*radius*heigth;}private:double radius,heigth;};int main(){ CSolid *p; double s,v; CCube a(3); cout<<"正方體的長為3"<<endl; p=&a; s=p->area( ); v=p->volume( ); cout<<"該正方體的表面積:"<<s<<endl; cout<<"該正方體的體積:"<<v<<endl; CBall b(4); cout<<"球體半徑為4"<<endl; p=&b; s=p->area( ); v=p->volume( ); cout<<"該球體的表面積:"<<s<<endl; cout<<"該球體的體積:"<<v<<endl; CCylinder c(1.5,4); cout<<"圓柱體底面半徑、高分別為1.5,4"<<endl; p=&c; s=p->area( ); v=p->volume( ); cout<<"該圓柱體的表面積:"<<s<<endl; cout<<"該圓柱體的體積:"<<v<<endl; return 0;}
運行結果: