vtk早期版本并没有集成C++,所以只有指针形式的创建对象,类似:
没有类的概念,所以需要手动释放
新版本逐渐集成了C++的智能指针,不需要手动释放。
VTK中的智能指针类为vtkSmartPointer,继承自vtkSmartPointerBase,可以看到是一个类模板,
vtkSmartPointer中定义了静态函数New(),调用构造函数生成一个智能指针对象,
vtkSmartPointer构造函数拿到对象后,用来初始化父类vtkSmartPointerBase,
可以看到vtkSmartPointerBase初始化时,用Register()来增加引用计数加1,相应的析构时再去调用unRegister进行减1,
后面又提供了vtkNew模板类,
功能和vtkSmartPointer一样,都是智能指针,不过更加轻量,推荐在局部变量使用,全局还是建议用vtkSmartPointer,