读书人

重载运算符i++和++i有关问题

发布时间: 2012-09-12 09:21:30 作者: rapoo

重载运算符,i++和++i问题
重载运算符,i++和++i是怎么知道执行的是哪个operator函数,虽然第二个带了个参数。

********************************************************************************
csdn发图太坑爹了。还是发代码吧!!
*********************************************************************************

C/C++ code
#include <iostream>using namespace std;class dome{public:    dome(){cout<<"构造函数"<<endl;};    dome(int i){cout<<"带参构造函数"<<endl;x=i;};    ~dome(){cout<<"析构函数"<<endl;};    dome(const dome&one){x=one.x;cout<<"复制值"<<endl;}    void set(int i){x=i;}    int get(){return x;}    dome &operator++()    {        ++x;        cout<<"operator执行"<<endl;        return *this;    }    dome operator++(int o)    {        dome temp(*this);        ++x;        return temp;    }private:    int x;};int main(){    dome n;    n.set(5);    cout<<n.get()<<endl;    dome y=n++;    cout<<n.get()<<endl;    cout<<y.get()<<endl;    return 0;};


[解决办法]
C/C++ code
 dome &operator++()    {        ++x;        cout<<"operator执行"<<endl;        return *this;    }    dome operator++(int o)    {        dome temp(*this);        ++x;        return temp;    }参数类型,返回值类型都是不一样的,编译器当然能区分开了
[解决办法]
重载的时候增加一个哑元,就是没有任何作用的形参 0.
[解决办法]
只能在调用时通过显式的operator++(常数)来调用后自增吧,好像没有什么简单的方法

读书人网 >C++

热点推荐