运算符重载

运算符重载

运算符重载的意义

摘自百度百科。

c++的一大特性就是重载(overload),通过重载可以把功能相似的几个函数合为一个,使得程序更加简洁、高效。在c++中不止函数可以重载,运算符也可以重载。
由于一般数据类型间的运算符没有重载的必要,所以运算符重载主要是面向对象之间的。
在进行对象之间的运算时,程序会调用与运算符相对应的函数进行处理,所以运算符重载有两种方式:成员函数和友元函数。
成员函数的形式比较简单,就是在类里面定义了一个与操作符相关的函数。友元函数因为没有this指针,所以形参会多一个。

operator关键字

重载的格式  return_type operator operator_type(parameters){

}

单目运算符重载

++ -- * -> ! & ~ + -

前缀运算符和后缀运算符的不同
    //前缀运算符
    MyClass& operator ++ (){
        ++a;
        return *this;
    }
    //后缀运算符
    MyClass operator ++ (int){
        MyClass newObj(a);
        ++a;
        return newObj;
    }

    //指针重载
    T& operator*()const{
        return *(m_handler);
    }
    //->重载
    T* operator->()const{
        return m_handler;
    }

双目运算符重载

    //+运算符重载
    MyClass operator+(int c){
        MyClass newObj(a);
        newObj.a =newObj.a + c;
        return newObj;
    }

比较运算符重载

    //>=运算符重载

    bool operator >= (const MyClass &newObj){
        return a >= newObj.a ;
    }

下标运算符重载

    //下标运算符
    int& operator[](int index){
        return myarr[index];
    }

()运算符重载

    //()运算符
    void operator()(string str) const{
        cout << str << endl;
    }

不能重载的运算符

. ?: .* sizeof ::

参考

https://wuyuans.com/2012/09/cpp-operator-overload/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值