条款六:区别++和--操作符前置和后置的区别

来源:互联网 发布:centos 6.5 开启snmp 编辑:程序博客网 时间:2024/04/28 16:42

条款六:区别++和–操作符前置和后置的区别

  首先明确在操作符重载中前置++,–和后置++,–的语法如下:

class fun{    int _num;public:    fun(int num) :_num(num){}    fun& operator++()              //前置    {        _num++;        return *this;    }    const fun operator++(int)      //后置    {        fun fun_rst(_num);        _num++;        return fun_rst;    }    fun& operator--()              //前置    {        _num--;        return *this;    }    const fun operator--(int)      //后置    {        fun fun_rst(_num);        _num--;        return fun_rst;    }    //友元函数--类似    friend fun& operator++(fun f);    friend const fun operator++(fun f,int);    void run()    {        std::cout << _num << std::endl;    }};//这里重定义有语法错误,只是演示一下fun& operator++(fun f){    f._num++;    return f;}const fun operator++(fun f, int){    fun tmp(f._num);    f._num++;    return tmp;}

  前置式返回一个const是为了防止出现f++++的情况,这种情况会产生误解。然而,应用时尽量使用前置++而不是用后置++就可以避免类似困扰,或者将后置++的实现依赖于前置++就不会导致两者行为不一致的情况发生。

0 0
原创粉丝点击