Chinaunix首页 | 论坛 | 博客
  • 博客访问: 20278
  • 博文数量: 14
  • 博客积分: 433
  • 博客等级: 下士
  • 技术积分: 145
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-16 23:07
文章分类

全部博文(14)

文章存档

2012年(14)

最近访客

分类: C/C++

2012-06-17 18:52:38


点击(此处)折叠或打开

  1. #include <iostream>
  2. using namespace std;
  3. template <class T>
  4. class Vector
  5. {
  6.     T *m_t;
  7.     int dim;
  8. public:
  9.      Vector(int n,T t[]){
  10.      dim = n;
  11.      m_t = new T[dim];
  12.      for (int i=0;i<dim;i++)
  13.      m_t[i] = t[i];
  14.        }
  15.        ~Vector(){
  16.      delete[] m_t;
  17.      }
  18.      Vector operator+(const Vector &)const;
  19.      Vector &operator=(const Vector &);
  20.      friend ostream &operator<<(ostream &out,const Vector<T> &v){
  21.           out << '(';
  22.           for (int i=0;i< v.dim-1;i++)
  23.              out << v.m_t[i] << ',';
  24.           return out << v.m_t[v.dim-1]<< ')';
  25.      }
  26. };
  27. template <class T>
  28. Vector<T> Vector<T>::operator+( const Vector<T> &v)const{
  29.      T *t;
  30.      t = new T[dim];
  31.      for (int i=0;i<dim;i++){
  32.      t[i] = m_t[i] + v.m_t[i];
  33.      }
  34.      return Vector<T>(dim,t);
  35. }

  36. template <class T>
  37. Vector<T> &Vector<T>::operator=( const Vector<T> &v){
  38. for (int i=0;i<dim;i++)
  39.         m_t[i] = v.m_t[i];
  40.      return *this;
  41. }
  42. int main(){
  43.      int t[3];
  44.      int i;
  45.      for (i = 0;i < 3; i++)
  46.           t[i] = i;
  47.      Vector<int> v1(3, t);
  48.             for (i = 0;i < 3; i++)
  49.           t[i] = i+5;
  50.      Vector<int> v2(3,t),v(3,t);
  51.             v = v1+v2;
  52.      cout << v <<endl;
  53. }
As show in the code, operator<< has to be declared friend and inline function!
阅读(273) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~