RAII和C ++中的智能指针之间的区别

Fra*_*nky 2 c++ smart-pointers raii

这两个之间的区别对我来说还不清楚。我所读到的内容非常庞大且复杂(就像C ++一样)。例如,这个属于多年前,也来自WikiPedia。这个问题本身可能很复杂。

我对它们的想法是,RAII是一种将其用于智能指针的机制,但是我不确定。我需要一个简单明了的答案。

您能以简单的语言用少量示例代码来解释它吗?请记住,我的C ++水平很低。

Che*_*Alf 6

RAII是使用 C++ 自动调用析构函数来释放在构造函数中获取的资源的想法。

首字母缩略词表示仅含糊其辞,Resource Acquisition Is Initialization

智能指针是一类至少重载operator->和反引用operator*以使得能够与指针表示法的使用。通常,智能指针将使用 RAII 技术自动释放内存。但它可以做其他事情。然而,智能指针以某种方式处理包含的原始指针的“所有权”是隐含的。例如,一个简单的迭代器类重载operator->operator*,但不被视为一个智能指针。


Mar*_*som 5

它们是免费的概念。RAII意味着对象自动照顾自己的资源。智能指针是完成分配的内存的RAII的一种方法。