vtkSmartPointer vtk的智能指针

是一个模板类。

template <class T>
class vtkSmartPointer: public vtkSmartPointerBase

{

  // Description:
  // Assign object to reference.  This removes any reference to an old
  // object.
  template <class U>
  vtkSmartPointer& operator=(const vtkSmartPointer<U>& r)
    {
    this->vtkSmartPointerBase::operator=(CheckType(r.GetPointer()));
    return *this;
    }

vtkSmartPointer重载了赋值操作符,可以在vtkSmartPointer对象之间进行赋值。在赋值过程中,vtkSmartPointer会自动控制其内部对象指针Object的引用计数加1

  // Description:
  // Create an instance of a VTK object.
  static vtkSmartPointer<T> New()
    {
    return vtkSmartPointer<T>(T::New(), NoReference());
    }

  // Get the contained pointer.
  T* GetPointer() const
    {
    return static_cast<T*>(this->Object);
    }

  // Description:
  // Provides normal pointer target member access using operator ->.
  T* operator->() const
    {
    return static_cast<T*>(this->Object);
    }

重载了‘->’操作符,返回实际的模板类型的的对象,因此可以方便的访问对象的成员函数。如light->SetColor()

class VTKCOMMONCORE_EXPORT vtkSmartPointerBase

  vtkObjectBase* Object;

vtkSmartPointer类中定义一个vtkObjectBase类型的指针对象Object,用于存储智能指针中实际生成的对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

灿烂李

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值