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

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