home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-385-Vol-1of3.iso / g / gina15.zip / demos / vtest.C < prev   
C/C++ Source or Header  |  1992-02-27  |  1KB  |  74 lines

  1. #include <stream.h>
  2.  
  3. class vbase {
  4.   public:
  5.     vbase() { i = 123; j = 456; };
  6.     virtual void show_this();
  7.     virtual void dummy();
  8.     int i, j;
  9. };
  10.  
  11. void vbase::dummy() {};
  12.  
  13. void vbase::show_this()
  14. {
  15.     cout << "vbase::show_this::this = " << this << "\n";
  16.     cout << i << "\n"; cout.flush();
  17. }
  18.  
  19. class vbase_left : public virtual vbase {
  20.   public:
  21.     vbase_left() { k = 777; };
  22.     //virtual void show_this() { vbase::show_this(); };
  23.     virtual void dummy();
  24.     int k;
  25. };
  26.  
  27. void vbase_left::dummy() {};
  28.  
  29. class vbase_right : public virtual vbase {
  30.   public:
  31.     vbase_right() { l = 888; };
  32.     virtual void show_this() { vbase::show_this(); };
  33.     virtual void dummy();
  34.     int l;
  35. };
  36.  
  37. void vbase_right::dummy() {};
  38.  
  39. class vsub : public vbase_left, public vbase_right {
  40.   public:
  41.     vsub() { m = 999; };
  42.     virtual void show_this();
  43.     virtual void dummy();
  44.     int m;
  45. };
  46.  
  47. void vsub::dummy() {};
  48.  
  49. void vsub::show_this()
  50. {
  51.     cout << "vsub::show_this::this = " << this << "\n";
  52.     cout << i << j << k << l << m << "\n"; cout.flush();
  53. }
  54.  
  55. main()
  56. {
  57.     vbase *base;
  58.  
  59.     vbase_left *base_leftptr = new vbase_left;
  60.     base_leftptr->show_this();
  61.     base = base_leftptr;
  62.     base->show_this();
  63.  
  64.     vbase_right *base_rightptr = new vbase_right;
  65.     base_rightptr->show_this();
  66.     base = base_rightptr;
  67.     base->show_this();
  68.  
  69.     vsub *subptr = new vsub;
  70.     subptr->show_this();
  71.     base = subptr;
  72.     base->show_this();
  73. }
  74.