********************************************************************************
csdn发图太坑爹了。还是发代码吧!!
*********************************************************************************
#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;
};
5 个解决方案
#1
++x 与 x++ 应该不算是重载的
而只是编译器的编译时处理的
而只是编译器的编译时处理的
#2
dome &operator++()
{
++x;
cout<<"operator执行"<<endl;
return *this;
}
dome operator++(int o)
{
dome temp(*this);
++x;
return temp;
}参数类型,返回值类型都是不一样的,编译器当然能区分开了
#3
那x++和++x分别是属于什么类型的?要怎么看??
#4
重载的时候增加一个哑元,就是没有任何作用的形参 0.
#5
只能在调用时通过显式的operator++(常数)来调用后自增吧,好像没有什么简单的方法
#1
++x 与 x++ 应该不算是重载的
而只是编译器的编译时处理的
而只是编译器的编译时处理的
#2
dome &operator++()
{
++x;
cout<<"operator执行"<<endl;
return *this;
}
dome operator++(int o)
{
dome temp(*this);
++x;
return temp;
}参数类型,返回值类型都是不一样的,编译器当然能区分开了
#3
那x++和++x分别是属于什么类型的?要怎么看??
#4
重载的时候增加一个哑元,就是没有任何作用的形参 0.
#5
只能在调用时通过显式的operator++(常数)来调用后自增吧,好像没有什么简单的方法