ARC和RAII之间的功能差异

时间:2016-07-05 15:06:20

标签: c++ objective-c automatic-ref-counting raii

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

我们说我有这个功能:

foo() {
    bar = new obj();
} // lifetime of bar object ends

如果obj是RAII语言中的对象,则会调用bar的析构函数。
如果obj是ARC语言中的一个对象,bar的保留计数将减少一,可能会将其解除分配。

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

ARC知道在程序的其他部分是否指向bar(在我的示例中基本上不可能,但请耐心等待),并且可以使用该信息。
RAII不仅可以释放对象,还可以像你想要的那样定义析构函数。

然而,C ++也有智能指针,Swift和Obj-C有解除分配功能。因此,这些语言基本上没有相同的功能,Swift基本上可以称为RAII语言,C ++称为ARC语言(或者说可以使用,可以与ARC一起使用)成语)?

0 个答案:

没有答案