• 运算符重载智能指针


    /*运算符重载--智能指针*/

    #include "stdafx.h"
    #include <iostream.h>

    class CPerson
    {
    private:
        int m_nAge;
    public:
        void sayHello()
        {
            this->m_nAge = 10;
            cout << "sayHello" << endl;
        }
    };

    class PerPtr
    {
    public:
        //
    构造时传入一个需要管理的指针
        PerPtr( CPerson* pPer )
        {
            m_pPerson = pPer;
        }
        //
    关键技巧,重载->来访问对象指针的数据
        CPerson* operator->()
        {
            return m_pPerson;
        }
        //
    自己析构时把指针也析构了
        ~PerPtr()
        {
            if ( m_pPerson )
            {
                delete m_pPerson;
                m_pPerson = NULL;
            }
        }
    private:
        //
    被管理的对象指针
        CPerson*  m_pPerson;
    };

    //
    智能指针类好处
    //
    堆对象的指针放入,智能指针对象的结构中
    //
    智能指针对象在栈中创建
    //
    用栈中对象的生命周期管理堆对象
    int main(int argc, char* argv[])
    {
        //
    带参构造,一个需要管理的指针为参数
        PerPtr per(new CPerson());

        //
    等同与(per.operator->())->sayHello();
        per->sayHello();

        return 0;
    }

  • 相关阅读:
    十二周作业
    十一周作业
    第十周作业
    第九周作业
    第八周作业
    第七周作业
    2019年第六周作业
    第五周作业总结
    介绍自己
    第一学期总结
  • 原文地址:https://www.cnblogs.com/w413133157/p/1662216.html
Copyright © 2020-2023  润新知