首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

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

重载运算符,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++(常数)来调用后自增吧,好像没有什么简单的方法

热点排行