java定义形状类shape_c++ 形状类Shape(派生出圆类Circle和矩形类Rectangle)

1.建立一个形状类Shape作为基类,派生出圆类Circle和矩形类Rectangle,求出面积并获取相关信息。

具体要求如下:

(1)形状类Shape

(a)保护数据成员

double x,y:对于不同的形状,x和y表示不同的含义,如对于圆,x和y均表示圆的半径,而对于矩形,x表示矩形的长,y表示矩形的宽。访问权限定义为保护类型是为了能被继承下去,以便派生类能直接访问x和y。

(b)公有成员函数

构造函数Shape(double _x,double _y):用_x、_y分别初始化x、y。

double GetArea():求面积,在此返回0.0。

(2)圆类Circle,从Shape公有派生

(a)公有成员函数

Circle(double r):构造函数,并用r构造基类的x和y。

double GetArea():求圆的面积。

double GetRadius():获取圆的半径。

(3)矩形类Rectangle,从Shape公有派生

(a)公有成员函数

Rectangle(double l,double w) :构造函数,并用l和w构造基类的x和y。

double GetArea():求矩形的面积。

double GetLength():获取矩形的长。

double GetWidth():获取矩形的宽。

(4)在主函数中对派生类进行测试。注意,在程序的开头定义符号常量PI的值为3.14。

测试的输出结果如下:

circle:r=1, area=3.14

rectangle:length=3, width=4, area=12

#include "stdafx.h"

#include

using namespace std;

#define PI 3.14

class Shape

{

public:

Shape(){}

Shape(double _x,double _y):x(_x),y(_y){}

double GetArea();

protected:

double x,y;

};

double Shape::GetArea()

{

return 0.0;

}

class Circle:public Shape

{

public:

Circle(){}

Circle(double r){ x=r;}//构造函数,并用r构造基类的x和y。

double GetArea();//求圆的面积。

double GetRadius();//获取圆的半径。

};

double Circle::GetArea()

{

return PI*x*x;

}

double Circle::GetRadius()

{

return x;

}

class Rectangle:public Shape

{

public:

Rectangle(){}

Rectangle(double l,double w){x = l;y=w;}//构造函数,并用l和w构造基类的x和y。

double GetArea();//求矩形的面积。

double GetLength();//获取矩形的长。

double GetWidth();//获取矩形的宽

};

double Rectangle::GetArea()

{

return x*y;

}

double Rectangle::GetLength()

{

return y;

}

double Rectangle::GetWidth()

{

return x;

}

int main(int argc, _TCHAR* argv[])

{

Circle circle(1);

cout<

Rectangle rectangle(3,4);

cout<

return 0;

}

到此这篇关于c++ 形状类Shape(派生出圆类Circle和矩形类Rectangle)的文章就介绍到这了,更多相关c++ 形状类Shape内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值