智能指针和普通指针的用法类似,但是智能指针可以在适当时机自动释放分配的内存。

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
11-09 00:17