我是通过VTK 5.4.2代码浏览,似乎并不能明白怎么做删除()函数的作品。我的意思是,删除()函数是在vtkObjectBase和是虚拟的,但是,通过什么链的命令是vtkDoubleArray类(例如)执行?

的析构函数

问候,

mightydodol

有帮助吗?

解决方案

vtkObjectBase删除()将调用UnRegisterInternal。如果类ReferenceCount小于或等于1,它会调用删除的类。

其他提示

这是一个种引用计数垃圾收集器。

如果你看一下vtkObjectBase,有三个功能 - 注册,注销和删除。这些是进行基准计数的那些。

当您注册一个实例,它增加一个引用计数。当你注销了,它降低。当裁判。数为0,它删除。当您使用新的()的对象,它的0引用计数你想它的一个独立的实例每次启动时,调用注册就可以了,它增加裁判。计数。删除()是用于取消注册()。

的另一个名称

如果设置一个对象到另一对象(vtkPolyData实例设置的算法,例如输入),它与你正在设置成(算法)作为父的实例调用注册。现在,当父(算法)被删除时,它的子被发现,并用它删除沿。

还有,以确保它们不会进入相互注销的循环节日当两个物体互相引用(vtkRenderer和vtkRenderWindow,例如)的方法,但是这基本上它。

另外:你不应该需要调用删除()非常频繁。它几乎总是可以使用vtkSmartPointer代替。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top