用模板类 完成不同类型数组的构造以及运算符重载

 用模板类 完成不同类型数组的构造以及运算符重载

array.h

#ifndef _ARRAY_H_

#define _ARRAY_H_

 

#include

 

using namespace std;

 

template

class Array

{

private:

        T *m_data;

        int m_len;

public:

        Array();

        Array(int l);

        Array(const Array &a);

        ~Array();

 

        template

        friend ostream &operator <<(ostream &out,const Array &a);

        T &operator [](int index);

};

 

 

#endif

 

 

 

array.hpp

#include

#include "array.h"

#include

 

using namespace std;

 

template

Array::Array()

{

        m_len = 0;

        m_data = new T(1);

}

 

template

Array::Array(int l)

{

        m_len = l;

        m_data = new T(m_len + 1);

}

 

template

Array::Array(const Array &a)

{

        m_len = a.m_len;

        m_data = new T(m_len + 1);

 

        for(int i=0;i

        {

                m_data[i] = a.m_data[i];

        }

}

 

template

Array::~Array()

{

        if(m_data != NULL)

        {

                delete[] m_data;

        }

}

 

template

ostream &operator <<(ostream &out,const Array &a)

{

        for(int i=0;i

        {

                out << a.m_data[i] << "  ";

        }

        return out;

}

 

template

T& Array::operator[](int index)

{

        return m_data[index];

}

Main.cpp

#include "array.hpp"

 

using namespace std;

 

int main()

{

        Array a(5);

        Array b(a);

 

        cout << a << endl;

        cout << b << endl;

 

return 0;

}

你可能感兴趣的:(用模板类 完成不同类型数组的构造以及运算符重载)