- #include <iostream>
- using namespace std;
- template <class T>
- class Vector
- {
- T *m_t;
- int dim;
- public:
- Vector(int n,T t[]){
- dim = n;
- m_t = new T[dim];
- for (int i=0;i<dim;i++)
- m_t[i] = t[i];
- }
- ~Vector(){
- delete[] m_t;
- }
- Vector operator+(const Vector &)const;
- Vector &operator=(const Vector &);
- friend ostream &operator<<(ostream &out,const Vector<T> &v){
- out << '(';
- for (int i=0;i< v.dim-1;i++)
- out << v.m_t[i] << ',';
- return out << v.m_t[v.dim-1]<< ')';
- }
- };
- template <class T>
- Vector<T> Vector<T>::operator+( const Vector<T> &v)const{
- T *t;
- t = new T[dim];
- for (int i=0;i<dim;i++){
- t[i] = m_t[i] + v.m_t[i];
- }
- return Vector<T>(dim,t);
- }
- template <class T>
- Vector<T> &Vector<T>::operator=( const Vector<T> &v){
- for (int i=0;i<dim;i++)
- m_t[i] = v.m_t[i];
- return *this;
- }
- int main(){
- int t[3];
- int i;
- for (i = 0;i < 3; i++)
- t[i] = i;
- Vector<int> v1(3, t);
- for (i = 0;i < 3; i++)
- t[i] = i+5;
- Vector<int> v2(3,t),v(3,t);
- v = v1+v2;
- cout << v <<endl;
- }
As show in the code, operator<< has to be declared friend and inline function!
阅读(273) | 评论(0) | 转发(0) |