home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_13_04 / saks / array2.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1995-02-02  |  869 b   |  53 lines

  1. Listing 2 - A simple const-correct array class template
  2.  
  3. // array2.cpp
  4.  
  5. #include <stddef.h>
  6.  
  7. template <class T>
  8. class array
  9.     {
  10. public:
  11.     array(size_t n = 0);
  12.     array(const array &a);
  13.     ~array();
  14.     array &operator=(const array &a);
  15.     const T &operator[](size_t i) const;
  16.     T &operator[](size_t i);
  17.     size_t length() const;
  18. private:
  19.     T *pa;
  20.     size_t len;
  21.     };
  22.  
  23. // ...
  24.  
  25. template <class T>
  26. const T &array<T>::operator[](size_t i) const
  27.     {
  28.     return pa[i];
  29.     }
  30.  
  31. template <class T>
  32. T &array<T>::operator[](size_t i)
  33.     {
  34.     return pa[i];
  35.     }
  36.  
  37. template <class T>
  38. inline size_t array<T>::length() const
  39.     {
  40.     return len;
  41.     }
  42.  
  43. ...
  44.  
  45. template <class T>
  46. T sigma(const array<T> &a)
  47.     {
  48.     T sum = 0;
  49.     for (size_t i = 0; i < a.length(); ++i)
  50.         sum += a[i];
  51.     return sum;
  52.     }
  53.