重载运算符,i++和++i有关问题
重载运算符,i++和++i问题
重载运算符,i++和++i是怎么知道执行的是哪个operator函数,虽然第二个带了个参数。
********************************************************************************
****发图太坑爹了。还是发代码吧!!
*********************************************************************************
------解决方案--------------------
重载运算符,i++和++i是怎么知道执行的是哪个operator函数,虽然第二个带了个参数。
********************************************************************************
****发图太坑爹了。还是发代码吧!!
*********************************************************************************
- 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++(常数)来调用后自增吧,好像没有什么简单的方法