我试图理解像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一起使用)成语)?