increment/decrement/dereference操作符

 

复制代码

#include <iostream>

using namespace std;

class INT
{
    friend ostream& operator<<(ostream& os, const INT& i);

public:
    INT(int i) : m_i(i) {};

    //prefix: increment and then fetch
    INT& operator++()
    {
        ++(this->m_i);
        return *this;
    }

    //fetch and then increment
    const INT operator++(int)
    {
        INT tmp = *this;
        ++(*this);
        return tmp;
    }

    //prefix:decrement and then fetch
    INT& operator--()
    {
        --(this->m_i);
        return *this;
    }

    //prefix : fetch and then decrement
    const INT operator--(int)
    {
        INT temp = *this;
        --(*this);
        return temp;
    }

    //dereference
    int& operator*() const
    {
        return (int&)m_i;
    }

private:
    int m_i;
};

ostream& operator<<(ostream& os, const INT& i)
{
    os << '[' << i.m_i << ']';
    return os;
}

int main()
{
    INT I(5);
    cout << I++ << endl;
    cout << ++I<<endl;
    cout << I--<<endl;
    cout << --I<<endl;
    cout << *I<<endl;

    getchar();
    return 0;
}
复制代码

运行结果:

 

posted @   懒猫的新窝  阅读(184)  评论(0编辑  收藏  举报
编辑推荐:
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
阅读排行:
· 开发的设计和重构,为开发效率服务
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)
· 从零开始开发一个 MCP Server!
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想
· Ai满嘴顺口溜,想考研?浪费我几个小时
点击右上角即可分享
微信分享提示