//////////////////////////////////////
 ///类析构以后,成员变量内存空间释放,
 ///函数 和 变量 还是可以引用的
 //////////////////////////////////////
 #include <iostream>
 using namespace std;

 class CTest
 {
 public:
     CTest();
     ~CTest();
     void Print() { cout<<"....."<<m_refCount<<endl; }
     void AddRef();
     void ReleaseRef();
     int GetRef() { return m_refCount; }
     void destroy();
     ); return m_ptr;}
     int* getPtr(){ return m_ptr; }
     void setPtr2(int* p2) { m_ptr2 = p2;}

 private:
     int        m_refCount;
     int*    m_ptr;
     int*    m_ptr2;
 };

 CTest::CTest()
 {
     m_refCount = ;
     m_ptr = NULL;
 }
 CTest::~CTest()
 {
     m_refCount = ;
     delete m_ptr;//new的内存需要delete释放, 不然内存泄露。 系统只给指针值清空
 }

 void CTest::AddRef()
 {
     ++m_refCount;
     Print();
 }

 void CTest::ReleaseRef()
 {
     --m_refCount;
     Print();
     )
     {
         delete this;
         //return;
         Print();
     }
 }

 void CTest::destroy()
 {
     delete this;
 }

 int main()
 {
     CTest* ct = new CTest;    //一定要声明为指针,不然delete时会报错。
     /*for(int _i = 0; _i < 5; ++_i)
     {
         ct->AddRef();
     }

     for(int _i = 0; _i < 6; ++_i)
     {
         ct->ReleaseRef();
     }*/
     int *a = NULL;
     a = ct->setPtr();
     cout<<"&a1 = "<<a<<endl;
     cout<<"a1 = "<<(*a)<<endl;

     );
     ct->setPtr2(b);
     delete ct;
     cout<<"m_ptr = "<<(ct->getPtr())<<endl;
     cout<<"&a1 = "<<a<<endl;
     cout<<"a1 = "<<(*a)<<endl;

     cout<<"b = "<<*b<<endl;
     ct->Print();
     //ct->ReleaseRef();
     ct->Print();

     system("pause");
     ;
 }

C++提前delete的更多相关文章

  1. 浅谈 C++ 中的 new/delete 和 new[]/delete[]

    在 C++ 中,你也许经常使用 new 和 delete 来动态申请和释放内存,但你可曾想过以下问题呢? new 和 delete 是函数吗? new [] 和 delete [] 又是什么?什么时候 ...

  2. 声明提前js变量

    声明提前问题相关 js的变量声明语句无论出现在何处,都会先与其他代码首先被执行,使用var声明关键词声明变量的 作用于是当前的执行上下文,有可能是外围函数,或者,当变量声明在函数体之外时,则为全局变量 ...

  3. C++11 之 delete 和 default

    1  特殊成员函数 设计一个类,没有成员函数 (member function),只有数据成员 (member data) class DataOnly { private: std::string ...

  4. 深入理解JS的delete

    原文链接: Understanding delete原文作者: Kangax原文日期: 2010年01月10日 翻译日期: 2014年02月07日 翻译人员: 铁锚 !!!!!!!!草稿版本的翻译完成 ...

  5. 【转】浅谈 C++ 中的 new/delete 和 new[]/delete[]

    在 C++ 中,你也许经常使用 new 和 delete 来动态申请和释放内存,但你可曾想过以下问题呢? new 和 delete 是函数吗? new [] 和 delete [] 又是什么?什么时候 ...

  6. 浅谈c++ new and delete or new [] and delete []

    http://www.cnblogs.com/hazir/p/new_and_delete.html 在 C++ 中,你也许经常使用 new 和 delete 来动态申请和释放内存,但你可曾想过以下问 ...

  7. C++11 之 &quot; = delete &quot;

    1  缺省函数 设计一个类,没有成员函数 (member function),只有成员数据 (member data) class DataOnly { private: std::string st ...

  8. C++11 之 " = delete "

    1  缺省函数 设计一个类,没有成员函数 (member function),只有成员数据 (member data) class DataOnly { private: std::string st ...

  9. 【M8】了解各种不同意义的new和delete

    1.首先考虑new operator,new operator 可以认为做了三件事情:a.调用operator new分配一块内存:b.在这块内存上调用构造方法构造对象:返回指针. 2.operato ...

随机推荐

  1. (转)MySQL优化实例

    在Apache, PHP,MySQL的体系架构中,MySQL对于性能的影响最大,也是关键的核心部分.对于Discuz!论坛程序也是如此,MySQL的设置是否合理优化,直接影响到论坛的速度和承载量!同时 ...

  2. asp

    <%@LANGUAGE="%> <!--#include file="include.asp"--> <meta http-equiv=&q ...

  3. Codevs 3287 货车运输

    题目描述 Description A 国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有 q 辆货车在运输货物,司机们想知道每辆车在不超过 ...

  4. Java 学习第一步-JDK安装和Java环境变量配置

    Java学习第一步——JDK安装及Java环境变量配置 [原文]  2014-05-30 9:09  Java SE  阿超  9046 views Java作为当下很主流的编程语言,学习Java的朋 ...

  5. 获取唯一UUID/UDID方案

    概述 如何保证获取到的UUID能够唯一标识每一台设备呢?我们知道通过UIDevice可以获取到UUIDString,但是如果App被删除了然后重新安装,就会得到不同的UUIDString,这并不是我们 ...

  6. override与overload的区别

    override(重写,覆盖) 1.方法名.参数.返回值相同. 2.子类方法不能缩小父类方法的访问权限. 3.子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常). 4.存在于父类和子类之 ...

  7. 《Linux内核分析》第六周 进程的描述与创建

    [刘蔚然 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000] WEEK SIX(3 ...

  8. J-LINK V8固件烧录指导

    1 J-LINK V8固件烧录指导 J-LINK 是使用过程中,如果内部固件意外损坏或丢失,请参考下面操作步骤说明,重新烧录JLINK固件. 1.1 安装固件烧录软件 请ATMEL官方网址下载AT91 ...

  9. golang protobuf SetExtension

    对golang protobuf 的扩展字段赋值时候一直提示proto: bad extension value type clkUrl:="z.cn" proto.SetExte ...

  10. Python开发【第二章】:Python深浅拷贝剖析

    Python深浅拷贝剖析 Python中,对象的赋值,拷贝(深/浅拷贝)之间是有差异的,如果使用的时候不注意,就可能产生意外的结果. 下面本文就通过简单的例子介绍一下这些概念之间的差别. 一.对象赋值 ...