头图

指针智能类模板

现代C++开发库重要的类模板之一

C++中自动内存管理的主要手段

能够很大程度上避开内存相关的问题

智能指针

STL中的智能指针auto_ptr

声明周期结束时,销毁指向的内存空间

不能指向堆数组,只能指向堆对象

一片堆空间只属于一个智能指针对象

多个智能指针对象不能指向同一片堆空间

例:

#include <iostream>
#include <string>
#include <memory>
using namespace std;
class Test
{
    string m_name;
    public:
    Test (const char* name)
    {
       cout <<"hello"<< name << endl;
        m_name = name;
    }
    void print()
    {
        cout << "I'm"<<m_name <<"."<<endl;
        
    }
    ~Test()
    {
        cout <<"Goodbye ,"<< m_name << endl;
    }
};
int main()
{  
    auto_ptr<Test>pt(new Test("zhangyingli"));
    cout <<"pt = "<<pt.get() <<endl;
    pt->print();
    auto_ptr<Test>pt1(pt);
    
    cout << "pt = " << pt.get() <<endl;
    cout << "pt1= " << pt1.get() <<endl;
    
    pt1->print();
       return 0;
}

输出:

hellozhangyingli
pt = 0x9f7b008
I'mzhangyingli.
pt = 0
pt1= 0x9f7b008
I'mzhangyingli.
Goodbye ,zhangyingli

Slide5.PNG
Slide6.PNG


YingLi
6 声望4 粉丝

From zero to hero.