我喜欢这本书,但遗憾的是它没有涵盖智能指针,因为当时它们不是标准的一部分。那么在阅读这本书时,我可以公平地用智能指针或引用替换每个提到的指针吗?
我喜欢这本书,但遗憾的是它没有涵盖智能指针,因为当时它们不是标准的一部分。那么在阅读这本书时,我可以公平地用智能指针或引用替换每个提到的指针吗?
好的,智能指针有不同种类。例如:
你可以创建一个scoped_ptr
类,在代码块中分配任务时非常有用,当作用域结束时,资源会被自动释放。
类似这样:
template <typename T>
class scoped_ptr
{
public:
scoped_ptr(T* p = 0) : mPtr(p) {}
~scoped_ptr() { delete mPtr; }
//...
};
shared_ptr
,它的作用相同,但保留了引用计数。一旦引用计数达到0,您将进行解除分配。
shared_ptr
对于存储在STL容器等中的指针非常有用。编号。
代表对象所有权的指针应该被智能指针所取代。
其他指针应该被迭代器所取代(在最简单的情况下,迭代器只是一个原始指针的typedef
,但没有人会认为它们需要删除)。
当然,智能指针和迭代器的实现代码仍将需要原始指针。
Vec
类(有效地介绍了三个法则)和讨论句柄类来完成的(用于动态分配资源的句柄类基本上就是一个智能指针)。我想知道您认为何处可以受益于使用智能指针(我最近没有读过这本书)。 - James McNellis