智能指针是一个类,它可以实现指针的功能,但是它是一个类对象。
关于智能指针类模板的其在C++ 中STL、 Boost、QT都是非常重要的问题,它存在的理由是因为C++工程两个棘手的问题,内存泄漏、同一内存多次释放;
而智能指针具有(生命周期结束,自动释放内存;一片堆空间只能属于一个智能指针对象,多个对象就会发生所有权转让)
例子如下:
#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("D.T.Software"));
cout << "pt = " << pt.get() << endl;
pt->print();
cout << endl;
auto_ptr<Test> pt1(pt);
cout << "pt = " << pt.get() << endl;
cout << "pt1 = " << pt1.get() << endl;
pt1->print();
return 0;
}
2.介绍了QT的智能指针
3.自己写了智能指针