读书人

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

发布时间: 2012-10-20 14:12:47 作者: rapoo

求帮助解释这个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;}
[解决办法]
再都把握各个操作符对语言内置数据类型的支持情况来进行重载,根据需要的得到的数据类型设计返回值的数据类型

读书人网 >C++

热点推荐