码迷,mamicode.com
首页 > 其他好文 > 详细

操作符重载

时间:2014-12-16 16:47:00      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:style   blog   ar   color   sp   on   div   log   bs   

  今天在看《Effective C++》的Item 10时,书中说道,赋值操作符需要返回的是对*this的引用。
例如:

class Widget {
public:
    ...
    Widget& operator += (const Widget& rhs)
    {
        ...
        return *this;
    }
    
    Widget& operator = (const Widget& rhs)
    {
        ...
        return *this;
    }
};

  

  因此,我也尝试着重载了一下其他操作符,发现上面的条款只是对操作符 -=   +=   =   *=   /= 这些包含赋值操作符。而对于+ - * / 这些操作符则不能按照以上条款!

  

class myint
{
public:
    myint(int i = 0): _i(i)
    {

    }

    ~myint()
    {

    }

    myint& operator=(const myint& rhs)
    {
        _i = rhs._i;
        return *this;
    }

    //return myint, it is a temp var
    myint operator+(const myint& rhs)
    {
        myint temp;
        temp._i = _i + rhs._i;
        return temp;
    }

    myint& operator+=(const myint& rhs)
    {
        _i += rhs._i;
        return *this;
    }

    myint operator-(const myint& rhs)
    {
        myint temp;
        temp._i = _i - rhs._i;
        return temp;
    }

    myint& operator-=(const myint& rhs)
    {
        _i = _i - rhs._i;
        return *this;
    }

    myint operator*(const myint& rhs)
    {
        myint temp;
        temp._i = _i * rhs._i;
        return temp;
    }

    void result()
    {
        cout<<_i<<endl;
    }
private:
    int _i;
};

 

操作符重载

标签:style   blog   ar   color   sp   on   div   log   bs   

原文地址:http://www.cnblogs.com/wiessharling/p/4167370.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!