您的位置:首页 > 其它

13 周 任务四 设计抽象类

2012-05-15 21:22 120 查看
#include <iostream>

#include <string>

using namespace std;

class CSolid
{
public:

virtual double area() const = 0;

virtual double volume() const = 0;
};

class CCube:public CSolid
{
public:

CCube ( double c )

{

this -> c = c;

}

virtual double area() const

{

return 6 * c * c;

}

virtual double volume() const

{

return c * c * c ;

}

protected:

double c;

};

class CBall:public CSolid

{
public:

CBall ( double r1 )

{

this -> r1 = r1;

}

virtual double area() const

{

return 4 * 3.1415926 * r1 * r1;

}

virtual double volume( ) const

{

return 4 * 3.1415926 * r1 * r1 * r1 / 3;

}

protected:

double r1;

};

class CCylinder: public CSolid

{

public:

CCylinder ( double h1, double h2 )

{

this -> h1 = h1;

this -> h2 = h2;

}

virtual double area ( ) const

{

return 2 * 3.1415926 * h1 * h1 + 2 * 3.1415926 * h1 * h2;

}

virtual double volume( ) const

{

return  3.1415926 * h1 * h1 * h2;

}

protected:

double h1;

double h2;

};

int main()

{
CSolid *p;               //定义基类的指针 p;

CCube cc ( 1 );          //建立CCube类对象 cc 并为其数据成员“边长”赋值为1;

CBall cb ( 1 );          //建立CBall类对象 cb 并为其数据成员“半径”赋值为1;

CCylinder cy ( 1, 1 );   //建立CCylinder类对象cy,并为其数据成员“半径,高”分别赋值为“1,1”.

p = & cc;

cout << "正方体的表面积为:" << p -> area () << endl;

cout << "正方体的体积为:" << p -> volume () << endl;

p = & cb;

cout << "球的表面积为" << p -> area() << endl;

cout << "球的体积为" << p -> volume() << endl;

p = & cy;

cout << "圆柱体的表面积为" << p -> area () << endl;

cout << "圆柱体的体积为" << p -> volume () << endl;

system ( "pause" );

return 0;

}
 
调试结果为:
正方体的表面积为:6
正方体的体积为:1
球的表面积为12.5664
球的体积为4.18879
圆柱体的表面积为12.5664
圆柱体的体积为3.14159
请按任意键继续. . .


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  任务 class include c
相关文章推荐