一、概述
在C语言和C++中,不管我们用C语言的库函数malloc开辟了一块内存,还是用C++的操作符new出了一块内存,我们都要同过free和delete去释放内存。而对于其他高级语言来说,当我们开辟一块内存用完之后,我不用去管这块内存的释放,操作系统默认会帮我们把这块内存释放了。其实这样的机制在C++中也有,只是很少被用到而已,它就是所谓的智能指针。
二、智能指针
1、常规情况
void foo()
{
A* p = new A;
delete p;
}
2、智能指针
#include <iostream>
#include <memory>
using namespace std;
class A
{
public:
A()
{
cout << "this is constructor" << endl;
}
~A()
{
cout << "this is destructor" << endl;
}
void dis()
{
cout << "class A`s dis()" << endl;
}
};
int main()
{
//使用智能指针
auto_ptr auto_ptr<A>p(new A);
p->dis();
return 0;
}
这