封装一个数组类模板
代码:
/*===============================================
* 文件名称:array.cpp
* 创 建 者:
* 创建日期:2022年09月19日
* 描 述:
================================================*/
#include <iostream>
#include <cassert>
using namespace std;
template <class T,int len>
class Array
{
public:
Array(T num=0)
{
p=new T[len];
assert(p!=NULL);//断言函数
for(int i=0;i<len;i++)
{
p[i]=num;
}
cout <<__func__<<":"<<__LINE__<<endl;
}
Array(const Array &arr)
{
this->p=new T[len];
for(int i=0;i<len;i++)
{
this->p[i]=arr.p[i];
}
cout <<__func__<<":"<<__LINE__<<endl;
}
~Array()
{
delete[]p;
p=NULL;
cout <<__func__<<":"<<__LINE__<<endl;
}
public:
T get_arr_num(int pos)
{
return p[pos];
}
void set_arr_num(int pos, T num);
void show_arr()
{
for(int i=0;i<len;i++)
{
cout<< p[i]<<" ";
}
cout<<endl;
}
private:
T *p;
};
//在类外实现成员函数
template <class T,int len>
void Array<T,len>::set_arr_num(int pos,T num)
{
p[pos]=num;
}
int main()
{
Array<char ,5>arr('w');
arr. show_arr();
arr.set_arr_num(0,'m');
arr. show_arr();
Array<char,5>arr1(arr);
arr.show_arr();
return 0;
}
运行结果: