C++的函数重载篇(二)——运算符的重载

       实际上,C++在设计初就运用了函数的重载,如“+”就可以对整数,浮点数进行运算;“<<”左移运算符可以当作提取运算符使用。下面要介绍的便是运算符的重载。

        运算符重载有以下规则:

            1、C++不允许用户定义新的运算符,只能对C++已有的运算符进行重载;

            2、C++不能重载的运算符只有5个,分别是.(成员运算符)、*(成员指针访问运算符)、::(域运算符)、sizeof(长度运算符)、?:(条件运算符);

            3、重载不能够运算符对象(操作数)的个数;

            4、重载不能够改变运算符的优先级;

            5、重载不能够改变运算符的结合性-->如 赋值运算符"="是右结合性,自右向左,重载后仍为右结合性;

            6、重载的运算符不能够有默认的参数,否则就改变了运算符操作对象的个数。

            7、重载的运算符必须和用户自定义的类型的对象一起使用,其参数至少有一个是类对象或者是类对象的引用。

                       以“+”重载复数运算为例:  Complex operator +(int a ,Complex c){

                                                                           return Complex(a+c.real,c.img);

                                                                }

            8、用于类对象的运算符一般必须重载,但是有两个运算符例外,  =  &  不必用户重载。

“+”重载为复数运算的实例:

#include <iostream>

using namespace std;
class Complex
{
public:
    Complex(){real=0;img=0;}
    Complex(double r,double i){real=r;img=i;}
    Complex operator + (Complex &c2);            //声明重载运算符“+”的函数
    void display();
private:
    double real;
    double img;
};

Complex Complex :: operator +(Complex &c2)             //定义重载运算符"+"的函数
{
    Complex c;
    c.real = real + c2.real;
    c.img  = img  + c2.img;
    return c;
}
void Complex :: display()
{
    cout<<"("<<real<<","<<img<<"i)"<<endl;
}
int main()
{
    Complex c1(3,4),c2(5,-10),c3;
    c3=c1+c2;
    cout<<"c1=";
    c1.display();
    cout<<"c2=";
    c2.display();
    cout<<"c1+c2=";
    c3.display();
    return 0;
}

总结说明:

    重载运算符的函数一般格式如下:

    1、函数类型 operator 运算符名称 (形参表){对运算符重载的处理;}

    2、函数名是由 operator 和运算符名称组成的。

    3、c1.operator+(c2)是c1+c2的解释。

截图如下:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值