求助.圆类Circle继承自抽象基类Shape,圆的内接正方形类InnerSquare和外切正方形类

问题描述:

求助.圆类Circle继承自抽象基类Shape,圆的内接正方形类InnerSquare和外切正方形类
OuterSquare都继承自圆类;分别实现求取圆、圆的内接正方形和外切正方形的面积和周长的函数double area()和double perimeter(),即实现抽象基类Shape的两个虚函数.
1个回答 分类:综合 2014-09-30

问题解答:

我来补答
#include <math.h>
#include <iostream>
using namespace std;
class Shape
{
public:
virtual double area() = 0;
virtual double perimeter() = 0;
};

class Circle : public Shape
{
public:
Circle(double r) : m_r(r) {}
virtual double area() = 0;
virtual double perimeter() = 0;
protected:
double  m_r;
};

class InnerSquare : public Circle
{
public:
InnerSquare(double r) : Circle(r){}
virtual double area()
{
return 2 * m_r * m_r;
}
virtual double perimeter()
{
return sqrt((double)2) * m_r * 4;
}
};

class OuterSquare : public Circle
{
public:
OuterSquare(double r) : Circle(r){}
virtual double area()
{
return 4 * m_r * m_r;
}
virtual double perimeter()
{
return 2 * m_r * 4;
}
};

int main()
{
Shape * s1, * s2;
s1 = new InnerSquare(2);
s2 = new OuterSquare(3);
cout << "area=" << s1->area() << " perimeter=" << s1->perimeter() << endl;
cout << "area=" << s2->area() << " perimeter=" << s2->perimeter() << endl;
return 0;
}
 
 
展开全文阅读
剩余:2000
上一页:pass..
下一页:复合函数求值域