home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / IDIOMS.ZIP / 5NMATOM.C < prev    next >
C/C++ Source or Header  |  1991-12-04  |  731b  |  37 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. #include <String.h>
  7.  
  8. class Atom {
  9. };
  10.  
  11. class NumericAtom: public Atom {
  12. public:
  13.     NumericAtom(): sum(0) { }
  14.     NumericAtom(String &s) {
  15.         sum = 0;
  16.         for (int i = 0; s[i] >= '0' && s[i] <= '9'; i++) {
  17.             sum = (sum*10) + s[i] - '0';
  18.         }
  19.         s = s(i, s.length()-i);
  20.     }
  21.     NumericAtom(const NumericAtom &n) { sum = n.value(); }
  22.     ~NumericAtom() { }
  23.     long value() { return sum; }
  24.     Atom *copy() {
  25.         NumericAtom *retval = new NumericAtom;
  26.         retval->sum = sum;
  27.         return retval;
  28.     }
  29. private:
  30.     long sum;
  31. };
  32.  
  33. int main() {
  34.     String p = "123";
  35.     NumericAtom n = p;
  36. }
  37.