开发中一直萦绕我的一个困惑是:智能指针和原始指针什么场景怎么用?
现在终于有了答案:
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;
};
本文探讨了智能指针与原始指针的区别及应用场景。智能指针如unique_ptr和shared_ptr负责对象的生命期管理,而原始指针则不负责此任务。通过示例代码说明了不同情况下如何选择使用智能指针或原始指针。
8604





