参考自:https://blog.csdn.net/www_doling_net/article/details/8540242
智能指针有一个让人困惑的地方:当你创建一个智能指针类型的对象,然后改变它的指向,这时引用计数就会出错。例如:
vtkSmartPointer<vtkImageData>imageData = vtkSmartPointer<vtkImageData>::New();
imageData= Reader->GetOutput();
上面两行代码里,我们首先创建一个imageData,并给他分配好了内存,接着我们又把imageData指向Reader的输出,而不是一直指向我们创建的那块内存。对于这种情况,我们只要简单地调用:
vtkImageData*imageData = Reader->GetOutput();
这里没有必要使用智能指针,因为我们没有实际创建任何新的对象。