基本运算符的重载(+,-,/):
在以下简单程序中,将减法重载为类成员函数,注意这里的加法重载为类的友元函数,友元函数指的是这个函数实质上为全局函数,但是可以访问类的私有成员,用关键字friend 来标记。
1,重载运算符:返回值类型 operator 所重载的符号(参数列表)
以下面的代码为例:
参数 是类类型的变量,其中加&是能够节省空间,加快执行效率,共享同一内存;
在重载函数里面返回的是临时类变量,形式用的是类型名()的形式;
#include <iostream>
using namespace std;
class complex{
private:
double real,imag;
public:
complex(){real=0;imag=0;}
complex(double x1,double x2){real=x1;imag=x2;}
double getreal(){return real;}
double getimag(){return imag;}
complex operator-( complex &s);
friend complex operator /(complex &c1,complex &c2);//这里是利用友元函数进行重载,不是类的成员函数却可以访问类的私有成员
};
complex operator+( complex &a1,complex &a2)//另外一个这里的不能加const,原因就是不能再有const函数中进行运算;!!!!
{
return complex(a1.getreal()+a2.getreal(),a1.getimag()+a2.getimag());
}
complex complex::operator-(complex &a2) //注意这里面是产生临时类且是以构造函数的形式来返回的!!!!
{
return complex(getreal()-a2.getreal(),getimag()-a2.getimag());
}
complex operator / (complex &c1,complex &c2) //由于不是类的成员,所以不需要:: 这里的complex是返回值对象类型!!!!!!!!!
{
return complex(c1.getreal()/c2.getreal(),c1.getimag()/c2.getimag());
}
int main()
{
complex a(6,4),b(3,2),c;
c=a+b;//这里对“+”进行了重载,注意一下
cout<<c.getreal()<<"+"<<c.getimag()<<"i"<<endl;
c=a-b;//这里对减法进行了重载!!!!!!
cout<<c.getreal()<<"-"<<c.getimag()<<"i"<<endl;
c=a/b;
cout<<c.getreal()<<"/"<<c.getimag()<<"%"<<endl;
return 0;
}