练习71
来源:互联网 发布:h3c路由器开启80端口 编辑:程序博客网 时间:2024/06/04 08:22
#include <iostream>
using namespace std;
class Shape
{
public:
Shape(){}
~Shape(){}
virtual float getArea() =0 ;
virtual float getPerim () =0 ;
int getVertexCount() const;
};
class Circle : public Shape
{
public:
Circle(float radius):itsRadius(radius){}
~Circle(){}
float getArea() { return 3.14 * itsRadius * itsRadius; }
float getPerim () { return 6.28 * itsRadius; }
private:
float itsRadius;
};
class Rectangle : public Shape
{
public:
Rectangle(float len, float width): itsLength(len), itsWidth(width){};
~Rectangle(){};
virtual float getArea() { return itsLength * itsWidth; }
float getPerim () { return 2 * itsLength + 2 * itsWidth; }
virtual float GetLength() { return itsLength; }
virtual float GetWidth() { return itsWidth; }
protected:
float itsWidth;
float itsLength;
};
class Square: public Rectangle
{
public:
Square (float len): Rectangle(len, len){};
~Square(){};
virtual float getArea() { return itsLength * itsWidth; }
float getPerim () { return 2 * itsLength + 2 * itsWidth; }
virtual float GetLength() { return itsLength; }
virtual float GetWidth() { return itsWidth; }
};
int Shape::getVertexCount() const
{
if (dynamic_cast<Circle*>(const_cast<Shape*>(this)) != 0)
return 0;
else if (dynamic_cast<Rectangle*>(const_cast<Shape*>(this)) != 0 || dynamic_cast<Square*>(const_cast<Shape*>(this)) != 0)
return 4;
else
return -1;
}
int main()
{
Shape * sp;
sp = new Circle(5);
cout << "The area of the Circle is " << sp->getArea () << endl;
cout << "The perimeter of the Circle is " << sp->getPerim () << endl;
cout << "The vertex count of the Circle is " << sp->getVertexCount() << endl;
delete sp;
sp = new Rectangle(4,6);
cout << "The area of the Rectangle is " << sp->getArea() << endl;
cout << "The perimeter of the Rectangle is " << sp->getPerim () << endl;
cout << "The vertex count of the Rectangle is " << sp->getVertexCount() << endl;
delete sp;
sp = new Square(6);
cout << "The area of the Square is " << sp->getArea() << endl;
cout << "The perimeter of the Square is " << sp->getPerim () << endl;
cout << "The vertex count of the Square is " << sp->getVertexCount() << endl;
delete sp;
return 0;
}
using namespace std;
class Shape
{
public:
Shape(){}
~Shape(){}
virtual float getArea() =0 ;
virtual float getPerim () =0 ;
int getVertexCount() const;
};
class Circle : public Shape
{
public:
Circle(float radius):itsRadius(radius){}
~Circle(){}
float getArea() { return 3.14 * itsRadius * itsRadius; }
float getPerim () { return 6.28 * itsRadius; }
private:
float itsRadius;
};
class Rectangle : public Shape
{
public:
Rectangle(float len, float width): itsLength(len), itsWidth(width){};
~Rectangle(){};
virtual float getArea() { return itsLength * itsWidth; }
float getPerim () { return 2 * itsLength + 2 * itsWidth; }
virtual float GetLength() { return itsLength; }
virtual float GetWidth() { return itsWidth; }
protected:
float itsWidth;
float itsLength;
};
class Square: public Rectangle
{
public:
Square (float len): Rectangle(len, len){};
~Square(){};
virtual float getArea() { return itsLength * itsWidth; }
float getPerim () { return 2 * itsLength + 2 * itsWidth; }
virtual float GetLength() { return itsLength; }
virtual float GetWidth() { return itsWidth; }
};
int Shape::getVertexCount() const
{
if (dynamic_cast<Circle*>(const_cast<Shape*>(this)) != 0)
return 0;
else if (dynamic_cast<Rectangle*>(const_cast<Shape*>(this)) != 0 || dynamic_cast<Square*>(const_cast<Shape*>(this)) != 0)
return 4;
else
return -1;
}
int main()
{
Shape * sp;
sp = new Circle(5);
cout << "The area of the Circle is " << sp->getArea () << endl;
cout << "The perimeter of the Circle is " << sp->getPerim () << endl;
cout << "The vertex count of the Circle is " << sp->getVertexCount() << endl;
delete sp;
sp = new Rectangle(4,6);
cout << "The area of the Rectangle is " << sp->getArea() << endl;
cout << "The perimeter of the Rectangle is " << sp->getPerim () << endl;
cout << "The vertex count of the Rectangle is " << sp->getVertexCount() << endl;
delete sp;
sp = new Square(6);
cout << "The area of the Square is " << sp->getArea() << endl;
cout << "The perimeter of the Square is " << sp->getPerim () << endl;
cout << "The vertex count of the Square is " << sp->getVertexCount() << endl;
delete sp;
return 0;
}
阅读全文
0 0
- 练习71
- 练习71
- 【SICP练习】71 练习2.42
- 71-75.个人练习。
- 练习
- “++”“--”练习
- 练习
- 练习
- 练习
- 练习
- 练习
- 练习
- 练习
- 练习
- 练习
- 练习
- 练习
- 练习
- 刷清橙OJ--A1053.The Next Cow
- log4j 学习资料整理
- 功能平台化思考
- 从一个男人身上看出他的修养和抱负
- ubuntu静态IP的设置
- 练习71
- iOS 动态下载系统提供的多种中文字体
- 异步向json加入元素
- css:before实现三角形箭头小技巧
- 低级的模仿的图像卷积算法
- 回车实现提交页面
- Android应用 欢迎页 登录页 闪屏页 首页 按home键后 点图标重复启动问题
- 表达式---C++ 基础
- "分散-聚集DMA"以及"scatterlist"