home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / IDIOMS.ZIP / 5-5.C < prev    next >
C/C++ Source or Header  |  1991-12-04  |  1KB  |  38 lines

  1. /* Copyright (c) 1992 by AT&T Bell Laboratories. */
  2. /* Advanced C++ Programming Styles and Idioms */
  3. /* James O. Coplien */
  4. /* All rights reserved. */
  5.  
  6. class Number {          // base class
  7. public:
  8.     virtual void add(int);
  9.     // . . . .
  10. };
  11.  
  12. class BigNumber : public Number {    // derived class
  13. public:
  14.     void add(double);
  15.     // . . . .
  16. };
  17.  
  18. int main() {
  19.     Number *a;
  20.     BigNumber *b, bo;
  21.     // . . . .
  22.     a->add(1);             // Number::add(int)
  23.     a->add(3.0);           // Number::add(int) with
  24.                            //     coercion int(3.0)
  25.     b->add(2);             // BigNumber::add(double) with
  26.                            //     promotion double(2)
  27.     b->add(2.0);           // BigNumber::add(double)
  28.     b->Number::add(7.0);   // Number::add(int) with
  29.                            //     coercion int(7.0)
  30.     bo.add(8);             // BigNumber::add(double)
  31.                            //     promotion double(8)
  32.     bo.add(9.0);           // BigNumber::add(double)
  33.     bo.Number::add(9);     // Number::add(int)
  34.     bo.Number::add(10.0);  // Number::add(int) with
  35.                            //     coercion int(10.0)
  36.     return 0;
  37. }
  38.