Ray's playground

 

Operator Overloading part 2(Chapter 12 of Thinking in C++)

 1 #include <iostream>
 2 #include <sstream>
 3 #include <cstring>
 4 using namespace std;
 5 
 6 class IntArray
 7 {
 8     enum { sz = 5 };
 9     int i[sz];
10 public:
11     IntArray() 
12     {
13         memset(i, 0, sz * sizeof(*i));
14     }
15     int& operator[](int x)
16     {
17         return i[x];
18     }
19     friend ostream& operator<<(ostream& os, const IntArray& ia);
20     friend istream& operator>>(istream& is, IntArray& ia);
21 };
22 
23 ostream& operator<<(ostream& os, const IntArray& ia)
24 {
25     for(int j=0; j<ia.sz; j++)
26     {
27         os << ia.i[j];
28         if(j != ia.sz - 1)
29         {
30             os << "";
31         }
32     }
33     os << endl;
34     return os;
35 }
36 
37 istream& operator>>(istream& is, IntArray& ia)
38 {
39     for(int j=0; j<ia.sz; j++)
40     {
41         is >> ia.i[j];
42     }
43 
44     return is;
45 }
46 
47 int main()
48 {
49     stringstream input("47 34 56 92 103");
50     IntArray I;
51     input >> I;
52     I[4= -1;
53     cout << I;
54 }

 

posted on 2010-11-27 14:20  Ray Z  阅读(194)  评论(0编辑  收藏  举报

导航