什么是c++运算符重载?运算符重载的方法介绍。重载是指重新赋予新的含义,而函数重载就是对已有的函数赋予新的含义,使之实现新功能。c++中的运算符同样是可以重载的。
现在要说的是能否根据自己的需要对C++已有的运算符进行重载,赋予这些已有的运算符新的含义。例如可否使用“+”号进行两个复数的相加,在C++程序开发里面是不可以在程序中直接用运算符“+”进行复数相加运算的。必须自己设法应用运算符重载实现复数相加。比如用户可通过定义特有的函数来实现复数相加。请参考以下c++实例:
定义函数来实现复数相加的功能c++实例:
#include <iostream>
using namespace std;
class Complex //定义Complex类
{
public:
Complex( ){real=0;imag=0;} //定义构造函数
Complex(double r,double i){real=r;imag=i;} //构造函数重载实现
Complex complex_add(Complex &c2); //声明复数相加函数
void display( ); //声明输出函数
private:
double real; //实部
double imag; //虚部
};
Complex Complex∷complex_add(Complex &c2)
{
Complex c;
c.real=real+c2.real;
c.imag=imag+c2.imag;
return c;
}
void Complex∷display( ) //定义输出函数
{
cout<<″(″<<real<<″,″<<imag<<″i)″<<endl;
}
int main( )
{
Complex c1(3,4),c2(5,-10),c3;//定义3个复数对象
c3=c1.complex_add(c2); //调用复数相加函数
cout<<″c1=″; c1.display( );//输出c1的值
cout<<″c2=″; c2.display( );//输出c2的值
cout<<″c1+c2=″; c3.display( );//输出c3的值
return 0;
}
以上程序运行结果如下:
c1=(3+4i)
c2=(5-10i)
c1+c2=(8,-6i)
运算式正确的,但调用方式太烦琐了,可不可以也和整数的加法运算一样,直接用加号“+”来实现复数运算呢?例如
c3=c1+c2;
编译器可以自动完成c1与c2两个复数相加的运算。这便需要对运算符“+”进行重载了。
运算符重载的方法是定义一个重载运算符的函数,在需要执行被重载的运算符时,系统自动调用这个函数,以实现对应的运算。运算符重载是通过定义函数实现的。运算符重载实质上是函数的重载。
c++重载运算符的函数常见的格式如下:
函数类型 operator 运算符名称 (形参表列)
{ 对运算符的重载处理 }
比如,将“+”用于Complex类(复数)的加法运算,函数的原型可以是这样的:
Complex operator+ (Complex& c1,Complex& c2);