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; //打印数组元素的成员函数
};
展开
 我来答
chenfenggang99
推荐于2016-05-02 · TA获得超过1850个赞
知道大有可为答主
回答量:1746
采纳率:75%
帮助的人:1733万
展开全部
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;
}
无辜恶的眼神
2014-05-27
知道答主
回答量:37
采纳率:0%
帮助的人:24.2万
展开全部
运算符重载函数
追问
代码贴上来谢谢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式