自己慢慢研究。。#include#includeclass Shape { public: virtual double GetArea() const = 0; }; //三角形 class Triangle : public Shape { public: Triangle(double a, double b, double c) : m_a(a), m_b(b), m_c(c) {} double GetArea() const { //海伦公式求面积 const double p = (m_a + m_b + m_c) / 2; return sqrt(p * (p - m_a) * (p - m_b) * (p - m_c)); } private: double m_a, m_b, m_c; }; //圆形 class Circle : public Shape { public: Circle(double r) : m_r(r) {} double GetArea() const { return PI * m_r * m_r; } private: static const double PI; double m_r; }; const double Circle::PI = 3.1415926; //矩形 class Rectangle : public Shape { public: Rectangle(double a, double b) : m_a(a), m_b(b) {} double GetArea() const { return m_a * m_b; } private: double m_a, m_b; }; int main() { Shape* pTriangle = new Triangle(3, 4, 5); printf("The area of Triangle is %lf\n", pTriangle->GetArea()); Shape* pCircle = new Circle(2); printf("The area of Circle is %lf\n", pCircle->GetArea()); Shape* pRectangle = new Rectangle(3, 4); printf("The area of Rectangle is %lf\n", pRectangle->GetArea()); delete pTriangle; delete pCircle; delete pRectangle; return 0; } |