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

The difference between RAII and smart pointers in C++

我还不清楚这两者之间的区别。我读到的关于它们的内容非常庞大和复杂(就像 C++ 一样)。例如,this one 属于多年前的内容,也来自维基百科。可能这个问题本身就很复杂。

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

请您用简单的语言和一个小的示例代码来解释一下好吗? 请记住,我的 C++ 水平很低。

它们是互补的概念。 RAII 意味着对象自动处理自己的资源。智能指针是为分配的内存实现 RAII 的一种方式。

RAII是技巧:

Resource Acquisition Is Initialization or RAII, is a C++ programming technique[1][2] which binds the life cycle of a resource (allocated memory, thread of execution, open socket, open file, locked mutex, database connection—anything that exists in limited supply) to the lifetime of an object with automatic storage duration.

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

RAII是利用C++自动调用析构函数的思路,释放构造函数获取的资源

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

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