CHAPTER1-26.cpp
上传用户:fjc899
上传日期:2007-07-03
资源大小:187k
文件大小:1k
源码类别:

STL

开发平台:

C/C++

  1. //文件名:CHAPTER1-26.cpp
  2. #include <iostream.h>
  3. class point
  4. {
  5. public:
  6.     point(int i=0, int j=0) { x0=i; y0=j; }
  7.     virtual void set() = 0;
  8.     virtual void draw() = 0;
  9. protected:
  10.     int x0, y0;
  11. };
  12. class line : public point
  13. {
  14. public:
  15.     line(int i=0, int j=0, int m=0, int n=0):point(i, j)
  16.     {  x1=m; y1=n; }
  17.     void set() { cout<<"line::set() called.n"; }
  18.     void draw() { cout<<"line::draw() called.n"; }
  19. protected:
  20.     int x1, y1;
  21. };
  22. class ellipse : public point
  23. {
  24. public:
  25.     ellipse(int i=0, int j=0, int p=0, int q=0):point(i, j)
  26.     { x2=p; y2=q; }
  27.     void set() { cout<<"ellipse::set() called.n"; }
  28.     void draw() { cout<<"ellipse::draw() called.n"; }
  29. protected:
  30.     int x2, y2;
  31. };
  32. void drawobj(point *p){ p->draw();}
  33. void setobj(point *p){ p->set();}
  34. void main()
  35. {
  36.     line *lineobj = new line;
  37.     ellipse *elliobj = new ellipse;
  38.     drawobj(lineobj);
  39.     drawobj(elliobj);
  40.     cout<<endl;
  41.     setobj(lineobj);
  42.     setobj(elliobj);
  43.     cout<<"nRedraw the object...n";
  44.     drawobj(lineobj);
  45.     drawobj(elliobj);
  46. }