运算符重载
C++允许程序员重新定义已有的运算符,称为运算符重载,目的是类的对象可以用来执行特定的功能。使用类成员函数实现运算符重载的格式为:
类名 operator 运算符 (参数表);
operator是关键字,一元运算符没有参数,二元运算符只有一个参数,调用该函数的对象是第一操作数。
上面是将运算符重载为成员函数,也可以将运算符重载为友元函数。这时候,一元运算符有一个参数,二元运算符有两个参数,这是因为友元函数不是用对象来调用的,所以这个对象也要算作参数。请看例子:
#include <iostream>
using namespace std;
class L
{
public:
L(int x){a=x;} //构造函数
L operator +(L &l); //运算符+重载为成员函数
friend L operator -(L &l1,L& l2);
void PrintL(){cout<<"a= "<<endl;}
private:
int a;
};
L L::operator +(L &l) //成员函数,所以要加L::
{
L l1;
l1.a= a + l.a; //用对象的数据a与参数对象的数据a之和给l1赋值
return l1;
}
L operator -(L &l1,L& l2) /不是成员函数,所以不用加L::
{
L l3;
l3.a= l1.a - l2.a;
return l3;
}
void main()
{
L l1(5),l2(3);
L l3=l1+l2; //运算符+的调用
L l4=l1-l2;
l3.PrintL();
l4.PrintL();
}
输出结果为:
a= 8
a= 2
运算符在这里也是一个函数,有实现的代码,记得关键字operator一定要加上。另外就是调用的时候,参数不再是写在括号中,而直接就用了。注意运算符重载为成员函数和友员函数的区别,主要区别是参数个数。
在右侧代码框中编写程序:重载运算符*和/