求帮助解释这个C++重载,多谢大哥大姐了

求帮助解释这个C++重载,谢谢大哥大姐了
#include <iostream>
#include <cstdlib>
using namespace std;
class A
{
  public:
  int i;
  A(int ii=1):i(ii){cout<<"构造函数:"<<endl;}
  A(){cout<<" 析构函数"<<endl;}
  void operator + (A & a){cout<<" + "<<endl; i+=a.i;}
  void operator ++ (){cout<<" ++ "<<endl; i++;}
  void operator ++ (int){cout<<" ++ (int) "<<endl; i++;}
  void operator = (A & a){cout<<" = "<<endl; i=a.i;} 
  void operator * (A & a){cout<<" * "<<endl; i*=a.i;}  
};
int main()
{
  A a1(5),a2(10);
  a1=a1*a2+(a2++);
  cout<<endl<<endl<<a1.i<<endl;
  A b1(5),b2(10);
  b1=b1*b2+(++b2);
  cout<<endl<<endl<<b1.i<<endl; 
  fflush(stdin);
  getchar();  
  return 0;  
}

------解决方案--------------------
C/C++ code

#include <iostream>
#include <cstdlib>
using namespace std;
class A
{
public:
    int i;
    A(int ii=1):i(ii){cout<<"构造函数:"<<endl;}
    ~A(){cout<<" 析构函数"<<endl;}
    A operator + (A & a){cout<<" + "<<endl; i+=a.i; return *this;}
    A& operator ++ (){cout<<" ++ "<<endl; i++;return *this;}
    A& operator ++ (int){cout<<" ++ (int) "<<endl; i++;return *this;}
    void operator = (A & a){cout<<" = "<<endl; i=a.i;}  
    A operator * (A & a){cout<<" * "<<endl; i*=a.i; return *this;}   
};
int main()
{
    
    A a1(5),a2(10);
    a1=a1*a2+(a2++);
    cout<<endl<<a1.i<<endl;
    A b1(5),b2(10);
    b1=b1*b2+(++b2);
    cout<<endl<<b1.i<<endl;  
    fflush(stdin);
    getchar();   
    return 0;   
}

------解决方案--------------------
A/* 不能用引用 */ operator ++ (int){cout<<" ++ (int) "<<endl; A old(i); i++;return old;}
------解决方案--------------------
再都把握各个操作符对语言内置数据类型的支持情况来进行重载,根据需要的得到的数据类型设计返回值的数据类型