home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 October / Chip_2001-10_cd1.bin / chplus / cpp / vektor1.cpp < prev    next >
C/C++ Source or Header  |  2001-09-12  |  2KB  |  72 lines

  1. ////////////////////////////////////////////////////////////////////////////
  2. //
  3. //  soubor: vektor1.cpp
  4. //  autor: Jaroslav Franek
  5. //  copyright? proc ne: (c) 2001 Jaroslav Franek
  6. //
  7. //  Spratelene funkce
  8. //     jak to bylo drive, ted uz to nema fungovat
  9. //     Microsoft Visual C++ to ale skousne
  10. //
  11. ////////////////////////////////////////////////////////////////////////////
  12. #pragma hdrstop
  13.  
  14. //---------------------------------------------------------------------------
  15. template <class T> class Vektor
  16. {
  17.    friend Vektor<T> operator+(const Vektor<T> & v1, const Vektor<T> & v2);
  18.  
  19. public:
  20.    //
  21.    //  ctr & dtr
  22.    //
  23.    Vektor(int s) : size_(s), data_(new T [s]) {}
  24.    Vektor(const Vektor<T> & v);
  25.    ~Vektor() { delete [] data_; }
  26.  
  27.    //
  28.    // iface
  29.    //
  30.    T & operator [](int i) { return data_[i]; }
  31.    T operator [](int i) const { return data_[i]; }
  32.  
  33. private:
  34.    T * data_;
  35.    int size_;  // velikost
  36. };
  37. //---------------------------------------------------------------------------
  38. template <class T>
  39. Vektor<T>::Vektor(const Vektor<T> & v)
  40. : size_(v.size_),
  41.   data_(new T [v.size_])
  42. {
  43.    for ( int i = 0 ; i < size_ ; ++i )
  44.    {
  45.       data_[i] = v.data_[i];
  46.    }
  47. }
  48. //---------------------------------------------------------------------------
  49. template <class T>
  50. Vektor<T> operator +(const Vektor<T> & v1, const Vektor<T> & v2)
  51. {
  52.    // predpokladame, ze v1 a v2 maji stejnou velikost
  53.    Vektor<T> pom(v1.size_);
  54.    for ( int i = 0 ; i < pom.size_ ; ++i )
  55.    {
  56.       pom.data_[i] = v1.data_[i] + v2.data_[i];
  57.    }
  58.    return pom;
  59. }
  60. //---------------------------------------------------------------------------
  61. #pragma argsused
  62. int main(int argc, char* argv[])
  63. {
  64.    Vektor<double> a(2);
  65.    Vektor<double> b(2);
  66.  
  67.    a + b;  // (!)
  68.  
  69.    return 0;
  70. }
  71. //---------------------------------------------------------------------------
  72.