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