格式

  1. class类名
  2. {
  3. public:
  4. ……
  5. virtual 返回值类型 函数名( 参数表 ) = 0; //纯虚函数
  6. ……
  7. };
  1. #include <iostream> // 编译预处理命令
  2. #include <string> // 编译预处理命令
  3. using namespace std; // 使用命名空间std
  4. /********* Begin *********/
  5. // 声明形状类Shape
  6. class Shape
  7. {
  8. public:
  9. virtual string GetName() const = 0; // 返回某形状的名字的纯虚函数
  10. virtual double GetArea() const = 0; // 返回某形状的面称的纯虚函数
  11. };
  12. // 声明矩形类Rectangle
  13. class Rectangle: public Shape
  14. {
  15. private:
  16. double width; // 宽
  17. double height; // 长
  18. public:
  19. // 公有函数
  20. Rectangle(double w, double h): width(w), height(h) {} // 构造函数
  21. string GetName() const; // 返回矩形的名字
  22. double GetArea() const; // 返回矩形的面称
  23. };
  24. // 定义矩形类的成员函数
  25. string Rectangle::GetName() const // 返回矩形的名字
  26. {
  27. return "矩形";
  28. }
  29. // 定义矩形类Rectangle的成员函数GetArea()
  30. double Rectangle::GetArea() const // 返回矩形的面积
  31. {
  32. return width*height;
  33. }
  34. // 声明圆形类Circle
  35. class Circle: public Shape
  36. {
  37. private:
  38. double radius; // 半径
  39. public:
  40. // 公有函数
  41. Circle(double r): radius(r) {} // 构造函数
  42. string GetName() const; // 返回矩形的名字
  43. double GetArea() const; // 返回矩形的面称
  44. };
  45. // 定义圆形类Circle的成员函数
  46. string Circle::GetName() const // 返回圆形的名字
  47. {
  48. return "圆形";
  49. }
  50. // 定义圆形类Circle的成员函数GetArea()
  51. double Circle::GetArea() const // 返回圆形的面积
  52. {
  53. return 3.14*radius*radius;
  54. }
  55. void ShowArea(const Shape &sp) // 显示相关图形的面积
  56. {
  57. cout<<sp.GetName()<<"的面积为"<<sp.GetArea()<<endl;
  58. }