< previous page page_361 next page >

Page 361
LISTING 21.4 continued
d5ef64f4d3250b96ba5c07ca5bbc2f56.gif
34:
35:   private:
36:      String (int);         // private constructor
37:      char * itsString;
38:      unsigned short itsLen;
39:   };
40:
41:   // default constructor creates string of 0 bytes
42:   String::String()
43:   {
44:      itsString = new char[1];
45:      itsString[0] = \0;
46:      itsLen=0;
47:      ASSERT(Invariants());
48:   }
49:
50:   // private (helper) constructor, used only by
51:   // class methods for creating a new string of
52:   // required size. Null filled.
53:   String::String(int len)
54:   {
55:      itsString = new char[len+1];
56:      for (int i = 0; i<=len; i++)
57:         itsString[i] = \0;
58:      itsLen=len;
59:      ASSERT(Invariants());
60:   }
61:
62:   // Converts a character array to a String
63:   String::String(const char * const cString)
64:   {
65:      itsLen = strlen(cString);
66:      itsString = new char[itsLen+1];
67:      for (int i = 0; i<itsLen; i++)
68:         itsString[i] = cString[i];
69:      itsString[itsLen]=\0;
70:      ASSERT(Invariants());
71:   }
72:
73:   // copy constructor
74:   String::String (const String & rhs)
75:   {
76:      itsLen=rhs.GetLen();
77:      itsString = new char[itsLen+1];
78:      for (int i = 0; i<itsLen;i++)
79:         itsString[i] = rhs[i];
80:      itsString[itsLen] = \0;
81:      ASSERT(Invariants());
d5ef64f4d3250b96ba5c07ca5bbc2f56.gif
continues

 
< previous page page_361 next page >

If you like this book, buy it!