619.cpp

来自「C++实训教程」· C++ 代码 · 共 64 行

CPP
64
字号

//用下面程序619.cpp为例来说明。在程序中定义一个Shape类(形状),设计一个dispArea()-计算并显示面积的接口。Shape类本身是抽象的,由它派生的Triangle(三角形)类,Rectangle(矩形)类, Circle类是具体的。setData()是一个成员函数,是设定二个坐标(x,y)的参数,它对所有派生类是相同的。dispArea()要设计成虚函数,它在基类中不需要做任何工作,在程序中,显示出一些信息以表示调用了本版本,在Triangle派生类和Rectangle派生类中因计算方法不同,所以有各自的实现版本。而接口是一样的。
/*
	619.cpp
	Written By S.Y.Feng
	demo virtual function in class Shape
class:
Shape
	Triangle
	Rectangle
	Circle
*/
#include <iostream.h>
class Shape
{
protected:  double x,y;
public:
  void setData(double i,double j=0){ x=i; y=j; }
  virtual void dispArea(void)=0;
};
class Triangle:public Shape  //三角形
{
public:
  void dispArea(void)
  {    cout <<"三角形面积: ";    cout << x*0.5*y << "\n";  }
};
class Rectangle:public Shape // 矩形
{
public:
  void dispArea(void)
  {   cout <<"矩形面积: ";   cout << x*y << "\n";  }
};

class Circle:public Shape //圆形
{
public:
  void dispArea(void)
  {    cout <<"圆形面积: ";  cout << 3.14159*x*x << "\n";}
};
main(void)
{
  Shape *pShape;	// create a pointer to base type
  Triangle t;	// create objects of derived types
  Rectangle r;
  Circle c;
  pShape=&t;
  pShape->setData(10.0,10.0);
  pShape->dispArea( );
  pShape=&r;
  pShape->setData(100.0,5.0);
  pShape->dispArea( );
  pShape=&c;
  pShape->setData(10.0);
  pShape->dispArea( );
  return 0;
}
/*-
三角形面积: 50
矩形面积: 500
圆形面积: 314.159

*/

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?