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

时间:2016-03-08 05:49:05

标签: c++ smart-pointers raii

这两者之间的差异对我来说尚不清楚。我读到的关于它们的内容非常庞大和复杂(就像C ++一样)。例如,this one属于多年前,也属于WikiPedia。可能这个问题本身很复杂。

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

请您用简单的语言解释一下,并附上一些示例代码吗? 请记住,我在C ++中处于低级别。

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

RAII是一种技巧:

  

资源获取是初始化还是RAII,是一种C ++编程技术[1] [2],它绑定资源的生命周期(分配的内存,执行的线程,打开的套接字,打开的文件,锁定的互斥锁,数据库连接 - 存在于有限供应中的任何东西)到具有自动存储持续时间的对象的生命周期。

RAII的概念包括所有有限的资源,而Smart points期望管理动态分配的内存或由普通指针表示的任何资源,遵循RAII。

答案 2 :(得分:2)

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

首字母缩略词表示只是模糊,资源获取是初始化

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