C ++智能指针

时间:2016-12-17 21:53:58

标签: c++ pointers smart-pointers

所以智能指针只是包装原始指针的类, 只有对象包含一个调用delete

的析构函数

如果确切有任何理由使用传统的原始指针? 使用智能指针总是更方便吗?

2 个答案:

答案 0 :(得分:2)

智能指针是资源管理的一种形式。还有一些可能更合适。例如,对于仅使用内存的对象图(即,没有任何对象持有任何形式的非内存资源),使用分配到竞技场并放弃竞技场更有效:它具有更小的开销并且是释放速度要快得多,特别是如果对象在缓存中不一定很热。在竞技场内维护的对象图使用原始指针链接。

智能指针是资源管理的众多工具之一。他们往往被不了解其他工具的人过度使用。当然,这是一种常见的模式:对于那些只使用锤子的人来说,每件事看起来都像钉子一样!

答案 1 :(得分:1)

智能指针带来一定的开销。如果您不需要智能指针提供的功能(通过RAII自动进行内存管理),那么只需坚持使用原始指针即可。请记住,原始指针本身并不一定是坏的,拥有资源的原始指针。所有权需要明确的delete - 离子。我们不希望这样。