Sicily 2710. 运算符重载

来源:互联网 发布:数据恢复专业版 编辑:程序博客网 时间:2024/05/16 15:44

2710. 运算符重载

Constraints

Time Limit: 1 secs, Memory Limit: 256 MB , Framework Judge

Description

试补充完成类numCal的定义
(注意:所有运算符的重载都必须符合运算符原本的语义,比如++A是“先加后使用”)
 
class numCal {
public:
         numCal(int [], int); //    构造函数,形参分别是整形数组、数组长度
         numCal(const numCal&) //拷贝构造函数
         ~numCal();                      //      析构函数,要完成释放内存的操作
         int sum();              //      求动态数组arr中size个元素值和
         numCal& operator=(const numCal&) //=运算符重载
numCal& operator++();                    //前序++运算符重载,使得++A后,A.arr的每个元素值加1
(A为numCal类型的对象,下同);
          
         numCal operator++(int);                  //后序++运算符重载,使得A++后,A.arr的每个元素值加1。
//……
private:
         int size;                       //      数组arr元素个数
         int *arr;                      //      动态数组
};
 

Hint

 你只需要提交类定义。

// Problem#: 2710// Submission#: 3375538// The source code is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License// URI: http://creativecommons.org/licenses/by-nc-sa/3.0/// All Copyright reserved by Informatic Lab of Sun Yat-sen Universityclass numCal {public:    numCal(int a[], int n) {        if (n == 0) arr = NULL;        else arr = new int[n];        size = n;        for (int i = 0; i < size; i++) arr[i] = a[i];    }     numCal(const numCal & an) {        if (an.size == 0) arr = NULL;        else arr = new int[an.size];        size = an.size;        for (int i = 0; i < size; i++) arr[i] = an.arr[i];     }     ~numCal() {         if (arr) delete[] arr;         arr = NULL;         size = 0;     }     int sum() {         int s = 0;         for (int i = 0; i < size; i++) s += arr[i];         return s;     }     numCal & operator=(const numCal & an) {         if (arr) delete[] arr;         arr = NULL;         arr = new int[an.size];         size = an.size;         for (int i = 0; i < size; i++) arr[i] = an.arr[i];         return *this;     }     numCal& operator++() {         for (int i = 0; i < size; i++) arr[i]++;         return *this;     }     numCal operator++(int) {         numCal an(*this);         for (int i = 0; i < size; i++) arr[i]++;         return an;     }private:    int size;    int *arr;};                                 


0 0
原创粉丝点击