100分!一个关于C++模板的小问题,测试通过的私信我谢谢
1.为下列CArray类定义一个数组元素类型为T的数组类模板。classCArray{private:int*p_arr;intsize;public:CArray();...
1. 为下列CArray类定义一个数组元素类型为T的数组类模板。
class CArray
{
private:
int *p_arr;
int size;
public:
CArray(); //缺省构造函数
CArray(int *p_a, int s); //构造函数
CArray(const CArray& r_other); //拷贝构造函数
~CArray(); //析构函数
int operator[](int pos) const; //访问数组元素值的下标运算符重载函数
int& operator[](int pos); //设置数组元素值的下标运算符重载函数
CArray &operator=(const CArray &r_other); //赋值‘=’运算符重载函数
CArray operator+(const CArray &r_other); //赋值‘+’运算符重载函数
CArray operator-(const CArray &r_other); //赋值‘-’运算符重载函数
void print() const; //打印数组元素的成员函数
}; 展开
class CArray
{
private:
int *p_arr;
int size;
public:
CArray(); //缺省构造函数
CArray(int *p_a, int s); //构造函数
CArray(const CArray& r_other); //拷贝构造函数
~CArray(); //析构函数
int operator[](int pos) const; //访问数组元素值的下标运算符重载函数
int& operator[](int pos); //设置数组元素值的下标运算符重载函数
CArray &operator=(const CArray &r_other); //赋值‘=’运算符重载函数
CArray operator+(const CArray &r_other); //赋值‘+’运算符重载函数
CArray operator-(const CArray &r_other); //赋值‘-’运算符重载函数
void print() const; //打印数组元素的成员函数
}; 展开
展开全部
class CArray
{
private:
int *p_arr;
int size;
public:
CArray();
CArray(int *p_a,int s);
CArray(const CArray& r_other);
~CArray();
int& operator[](int pos);
CArray operator = (const CArray & r_other);
CArray operator + (const CArray & r_other);
CArray operator - (const CArray & r_other);
void print() const;
};
CArray::CArray()
{
p_arr=0;
size=0;
}
CArray::CArray(int *p_a,int s)
{
if(s>0)
{
size=s;
p_arr=new int[size];
for(int i=0;i<size;i++)
p_arr[i]=p_a[i];
}
else
{
p_arr=0;
size=0;
}
}
CArray::CArray(const CArray& r_other)
{
size=r_other.size;
if(size)
{
p_arr=new int[size];
for(int i=0;i<size;i++)
p_arr[i]=r_other.p_arr[i];
}
}
CArray::~CArray()
{
if(p_arr)
delete[] p_arr;
}
int& CArray::operator [](int pos)
{
if(pos<0 || pos>=size)
{ cout<<" out of range"<<endl; exit(1); }
return p_arr[pos];
}
CArray CArray::operator +(const CArray &r_other)
{
int *tt;
tt=new int[size];
CArray temp(tt,size);
for(int i=0;i<size;i++)
{
temp.p_arr[i]=p_arr[i]+r_other.p_arr[i];
}
return temp;
}
CArray CArray::operator -(const CArray &r_other)
{
int *tt;
tt=new int[size];
CArray temp(tt,size);
for(int i=0;i<size;i++)
{
temp.p_arr[i]=p_arr[i]-r_other.p_arr[i];
}
return temp;
}
CArray CArray::operator =(const CArray &r_other)
{
int *tt;
tt=new int[size];
CArray temp(tt,size);
if(this!=&r_other)
{
delete[] p_arr;
p_arr=new int[r_other.size+1];
for(int i=0;i<size;i++)
p_arr[i]=r_other.p_arr[i];
}
return *this;
}
void CArray::print() const
{
cout<<"数组的数据为:"<<endl;
for(int i=0;i<size;i++)
cout<<p_arr[i]<<endl;
}
int main()
{
int a[5]={1,2,3,4,5};
CArray pa(a,5);
CArray pb(pa),pc(pa);
pc=pa+pb;
pc.print();
pc=pa-pb;
pc.print();
pc[1]=100;
pa=pc;
pa.print();
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询