C++ 原始指针、shared_ptr、unique_ptr分别在什么场景下使用

213 阅读1分钟

开发中一直萦绕我的一个困惑是:智能指针和原始指针什么场景怎么用?

现在终于有了答案:

2020-03-22 增加了unique_ptr指针的使用

1 智能指针天生负责对象生命期管理;所以生命期对象全都由unique_ptr和shared_ptr来管理。

2 原始指针天生不负责对象生命周期管理,这时候使用shared_ptr来传递动态对象和使用原始指针来传递动态对象本质上没有区别,为了简单还是传递原始指针更好一些。

下面是示例代码:注释里写清楚了使用的场景

class T3; class T2; class T1;

class A
{
	T3* m_t2;//创建和释放都由A之外的代码管理,A只负责(借用)使用;业务逻辑上保证A在使用m_t2指向的对象的时候,对象始终是存在的
	shared_ptr<T2> m_t2;//由加载程序创建m_t2指向的对象,执行时,交给A来管理,涉及动态对象的管理权的交接
	unique_ptr<T1> m_t1;//A管理该对象的生命周期,A的构造函数构造m_t1, A的析构函数释放m_t1;
};

———————————————— 版权声明:本文为CSDN博主「ClamReason」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:blog.csdn.net/calmreason/…