求助.圆类Circle继承自抽象基类Shape,圆的内接正方形类InnerSquare和外切正方形类OuterSquare都继承自圆类;分别实现求取圆、圆的内接正方形和外切正方形的面积和周长的函数double area()和double per
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/25 20:46:12
![求助.圆类Circle继承自抽象基类Shape,圆的内接正方形类InnerSquare和外切正方形类OuterSquare都继承自圆类;分别实现求取圆、圆的内接正方形和外切正方形的面积和周长的函数double area()和double per](/uploads/image/z/12870431-71-1.jpg?t=%E6%B1%82%E5%8A%A9.%E5%9C%86%E7%B1%BBCircle%E7%BB%A7%E6%89%BF%E8%87%AA%E6%8A%BD%E8%B1%A1%E5%9F%BA%E7%B1%BBShape%2C%E5%9C%86%E7%9A%84%E5%86%85%E6%8E%A5%E6%AD%A3%E6%96%B9%E5%BD%A2%E7%B1%BBInnerSquare%E5%92%8C%E5%A4%96%E5%88%87%E6%AD%A3%E6%96%B9%E5%BD%A2%E7%B1%BBOuterSquare%E9%83%BD%E7%BB%A7%E6%89%BF%E8%87%AA%E5%9C%86%E7%B1%BB%EF%BC%9B%E5%88%86%E5%88%AB%E5%AE%9E%E7%8E%B0%E6%B1%82%E5%8F%96%E5%9C%86%E3%80%81%E5%9C%86%E7%9A%84%E5%86%85%E6%8E%A5%E6%AD%A3%E6%96%B9%E5%BD%A2%E5%92%8C%E5%A4%96%E5%88%87%E6%AD%A3%E6%96%B9%E5%BD%A2%E7%9A%84%E9%9D%A2%E7%A7%AF%E5%92%8C%E5%91%A8%E9%95%BF%E7%9A%84%E5%87%BD%E6%95%B0double+area%28%29%E5%92%8Cdouble+per)
求助.圆类Circle继承自抽象基类Shape,圆的内接正方形类InnerSquare和外切正方形类OuterSquare都继承自圆类;分别实现求取圆、圆的内接正方形和外切正方形的面积和周长的函数double area()和double per
求助.圆类Circle继承自抽象基类Shape,圆的内接正方形类InnerSquare和外切正方形类
OuterSquare都继承自圆类;分别实现求取圆、圆的内接正方形和外切正方形的面积和周长的函数double area()和double perimeter(),即实现抽象基类Shape的两个虚函数.
求助.圆类Circle继承自抽象基类Shape,圆的内接正方形类InnerSquare和外切正方形类OuterSquare都继承自圆类;分别实现求取圆、圆的内接正方形和外切正方形的面积和周长的函数double area()和double per
#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;
}