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

求助.圆类Circle继承自抽象基类Shape,圆的内接正方形类InnerSquare和外切正方形类
OuterSquare都继承自圆类;分别实现求取圆、圆的内接正方形和外切正方形的面积和周长的函数double area()和double perimeter(),即实现抽象基类Shape的两个虚函数.
天堂的豆豆 1年前 已收到1个回答 举报

拿我没辙 幼苗

共回答了15个问题采纳率:93.3% 举报

#include
#include
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:
doublem_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;
}

1年前

4
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 16 q. 0.031 s. - webmaster@yulucn.com