智能指针和普通指针的用法类似,但是智能指针可以在适当时机自动释放分配的内存。
C++11有三种类型的智能指针,shared_ptr、unique_ptr 以及 weak_ptr;
先学习shared_ptr类型;
shared_ptr<T> 的定义位于<memory>头文件,并位于 std 命名空间中;
T 表示指针指向的具体数据类型;
C++11 还提供了 std::make_shared<T> 模板函数,可以用于初始化 shared_ptr 智能指针;
shared_ptr<T>模板类有一些常用成员方法;
其中;get(),获得 shared_ptr 对象内部包含的普通指针;
use_count(), 返回引用计数;
#include <memory>
#include <iostream>
using namespace std;
int main()
{
std::shared_ptr<int> p1(new int(9999));
std::shared_ptr<string> s1(new string("test string"));
cout << p1 << ", 引用计数:" << p1.use_count() << endl;
cout << s1 << ", 引用计数:" << s1.use_count() << endl;
auto a1 = std::make_shared<int>(9979);
co