ARC 和 RAII 之间的功能差异

hgi*_*sel 5 c++ raii objective-c automatic-ref-counting

我试图理解像 RAII 这样的 C++ 和像 ARC 这样的 Obj-C 或 Swift 之间的区别。

假设我有这个功能:

foo() {
    bar = new obj();
} // lifetime of bar object ends
Run Code Online (Sandbox Code Playgroud)

如果 obj 是 RAII 语言中的对象,bar则会调用 s 析构函数。
如果 obj 是 ARC 语言中的对象,则bars 保留计数将减一,可能会释放它。

因此,在这一点上,这两种方法都具有另一种方法所缺乏的一些功能:

ARC 知道bar程序的其他部分是否被指向(这在我的示例中基本上是不可能的,但请耐心等待),并且可以利用该信息来发挥它的优势。
RAII 可以做的不仅仅是释放对象,因为您可以根据需要定义析构函数。

然而,C++ 也有智能指针,Swift 和 Obj-C 有释放函数。那么这些语言的功能基本不一样,Swift 基本上可以称为 RAII 语言,C++ 可以称为 ARC 语言(或者说can be used 可以与 ARC idiom 一起使用)?