C++ increment/decrement/dereference 操作符典型写法

来源:互联网 发布:逆袭网络剧什么时候播 编辑:程序博客网 时间:2024/06/05 15:37

C++自增(increment)、自减(decrement)运算符(operator++,operator--)和取值(dereference ,或称解引用)运算符(operator*)的典型写法,其中自增自减运算符分为前置式(prefix)和后置式(postfix)两种。

以简单实现INT自增/自减/取值为例:

#include <iostream>using namespace std;class INT{    friend ostream& operator << (ostream& os, const INT& i);private:    int m_i;public:    INT(int i) : m_i(i) {};    // prefix : increment and then fetch    INT& operator ++ ()    {        ++(this->m_i);        return *this;    }    // postfix : fetch and then increment    const INT operator ++ (int)    {        INT temp = *this;        ++(*this);        return temp;    }    // prefix : decrement and then fetch    INT& operator -- ()    {        --(this->m_i);        return *this;    }    // postfix : fetch and then decrement    const INT operator -- (int)    {        INT temp = *this;        --(*this);        return temp;    }    // dereference    int& operator * () const    {        return (int&)m_i;        //转换操作告诉编译器将const int转换为non-const lvalue    }};ostream& operator << (ostream&os, const INT& i){    os << i.m_i;    return os;}int main(){    INT I(2);    cout << I++ << endl;    //2    cout << ++I << endl;    //4    cout << I-- << endl;    //4    cout << --I << endl;    //2    cout << *I  << endl;    //2    return 0;}

参考资料:《STL源码剖析》,侯捷


阅读全文
0 0