运算符重载实现数组自加、自减

来源:互联网 发布:交换机端口速率配置 编辑:程序博客网 时间:2024/05/20 07:17
/*定义一维数组类 Array,成员数组使用动态内存。重载自增和自减运算符(前置、后置)实现数组元素的自增和自减。具体要求如下:(1)私有数据成员:   int *p;         // 表示一维数组   int n;      // 一维数组的大小(2)公有成员函数:   构造函数:初始化数据成员;   拷贝构造函数   重载前置自增的成员函数;   重载后置自增的成员函数;   重载前置自减的友元函数;   重载后置自减的友元函数;   void print():输出数组成员的函数;   析构函数:释放动态内存;   若有必要可增加其它成员函数。(3)以数组“{1,2,3,4,5,6,7}”对所定义的类进行测试,要求输出数组元素的自增和自减(前置、后置)情况。*/#include<iostream>using namespace std;class Array{private:    int *p;    int n;public:    Array(int *, int );    Array& operator ++();    Array& operator ++(int );    friend Array& operator --(Array &arr);    friend Array& operator --(Array &arr, int );    friend ostream & operator <<(ostream &, Array &);    void print();    ~Array();};Array::Array(int *temp, int num){    p = new int;    p = temp;    n = num;}//有参数的++重载为后置重载Array& Array::operator ++(){    int *pp = p;    for (int i = 0; i < n; i++)    {        ++(*pp);                pp++;    }    return *this;}Array &Array::operator ++(int m) //注意此处,后置运算符需要有虚参数,因为类有了n的定义,所以应该换一个虚参数{    int *pp = p;    for (int i = 0; i < n; i++)    {        (*pp)++;        pp++;    }    return *this;}Array& operator --(Array &arr){    int *pp = arr.p;    for (int i = 0; i < arr.n; i++)    {        --(*pp);        pp++;    }    return arr;}Array& operator --(Array &arr, int n){    int *pp = arr.p;    for (int i = 0; i < arr.n; i++)    {        (*pp)--;        pp++;    }    return arr;}void Array::print(){    int *pp = p;    for (int i = 0; i < n; i++)    {        cout << *pp << '\t';        pp++;    }    cout << endl;}ostream & operator <<(ostream & output, Array & arr){    int *pp = arr.p;    for (int i = 0; i < arr.n; i++)    {        output << *pp << '\t';        pp++;    }    return output;}Array::~Array(){    delete p;}int main(){    int a[] = { 1,2,3,4,5,6 };    Array arr(a, 6);    arr.print();    cout << ++arr << endl;    cout << arr++ << endl;    cout << --arr << endl;    cout << arr-- << endl;    arr.print();    system("pause");    return 0;}
原创粉丝点击