1.
inline complex&
__doapl(complex* ths,const complex& r)
{
ths->re +=r.re;
ths->im +=r.im;
return *ths;
}
inline complex&
complex::operator +=(this,const complex& r)/*所有的成员函数都带有一个隐藏参数this,代指调用此函数的调用者*/
{
return __doapl(this,r);
}/*成员函数,定义在类内部的函数*/
inline double
imag(const complex& x)
{
return x.imag();
}
inline double
real(const complex& x)
{
return x.real();
}/*两个全局函数*/
{
complex c1(2,1);
cout<<imag(c1);
cout<<real(c2);
}
inline complex
operator + (const complex&c x,const complex& y)
{
return complex (real(x)+real(y),imag(x)+imag(y));
}
inline complex
operator + (const complex&c x,const double y)
{
return complex (real(x)+y,imag(x));
}
inline complex
operator + (double x,const complex& y)
{
return complex (x+real(y),imag(y));
}/*三个非成员函数以对应用户的三种需求*/
{
complex c1(2,1);
complex c2;
c2=c1+c2;
c2=c1+5;
c2=7+c1
}
该处使用的url网络请求的数据。
总结
complex::operator +=(this,const complex& r),this在写代码时不能写出来此处仅作理解参考,若写上去会报错
成员函数和非成员函数只能写一种
三个成员函数都是return by value,因为return complex (real(x)+real(y),imag(x)+imag(y));此处的两数之和需要保存在complex中,而当函数结束时complex就销毁了,会发生传址错误,无法做到pass by reference