2016-03-08 38 views
2

这两者之间的区别对我来说还不是很清楚。我读过的关于它们的内容非常庞大而复杂(就像C++一样)。例如,属于几年前的this one以及WikiPedia也是如此。可能这个问题本身很复杂。C++中RAII和智能指针的区别

我认为他们是,RAII是一种机制,我们使用它的智能指针,但我不知道这一点。我需要一个简单而直接的答案。

请您用简单的语言用一个小样本代码来解释它吗? 请注意,我在C++中处于低级别。

回答

2

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

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

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

3

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

+1

谢谢马克。所以我想他们是对的! :) – Franky

2

RAII是这样一种技术:

资源获得即初始化或RAII,是一个C++编程技术[1] [2],其结合一个资源的生命周期(分配的存储器,执行的线程,开放式套接字,打开文件,锁定互斥锁,数据库连接(存在于有限供应中的任何内容)到具有自动存储持续时间的对象的生命周期。

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