一些C++中最常用的运算符算术运算符,加号操作符(+),减运算符(-),乘法运算符(*),和除法运算符(/)。注意所有的算术运算符是二元运算符意味着他们接受两个操作数-一个在每一侧的操作员。这些运营商的四都是在相同的方式,超载。
使用函数重载运算符的朋友
当操作者不修改其操作数,超载运营商的最佳方法是通过朋友函数。的算术运算符的操作数不修改(他们只是产生并返回结果),所以我们将利用友元函数重载运算符的方法在这里。
下面的示例演示如何重载运算符+(+)为了增加两个“分”的对象在一起:
lass Cents
{
private:
int m_nCents;
public:
Cents(int nCents) { m_nCents = nCents; }
// Add Cents + Cents
friend Cents operator+(const Cents &c1, const Cents &c2);
int GetCents() { return m_nCents; }
};
// note: this function is not a member function!
Cents operator+(const Cents &c1, const Cents &c2)
{
// use the Cents constructor and operator+(int, int)
return Cents(c1.m_nCents + c2.m_nCents);
}
int main()
{
Cents cCents1(6);
Cents cCents2(8);
Cents cCentsSum = cCents1 + cCents2;
std::cout << "I have " << cCentsSum .GetCents() << " cents." << std::endl;
重载的+运算符(+)是声明一个函数名为操作符+简单,给它的我们要添加的操作数的类型的两个参数,选择适当的返回类型,然后编写函数。
在我们美分对象的情况下,实现我们的操作符+()函数很简单。首先,参数类型:在这个版本的操作符+,我们要添加两美分的对象在一起,所以我们的功能将两个对象类型分。第二,返回类型:我们的运营商+要返回类型分,所以这是我们的返回类型。
最后,实施:添加两美分的对象在一起,我们真的需要添加m_ncents成员从每一美分的对象。因为我们的重载操作符+()函数类的一个朋友,我们可以直接访问我们的参数m_ncents成员。同时,由于m_ncents是一个整数,和C + +知道如何添加整数的加操作符一起使用,与整数运算内置的版本,我们可以简单地使用运算符来增加。