autoPtr类是一个模板类,其主体结构如下:
其中,可以看出有一个私有变量T* ptr_;ptr_用来保存一个T类型的对象的指针。
该类提供两个构造函数:inline explicit autoPtr(T* = NULL);和复制构造函数inline autoPtr(const autoPtr<T>&);
析构函数:inline ~autoPtr();用来在析构对象时,删除ptr_指向的对象所占的内存
成员函数:
inline bool valid() const; 如果ptr_指向某个对象,则返回true,否则返回false
inline T* ptr(); 返回指向ptr_指向对象的指针,并设置ptr_=NULL;
inline void set(T* p); 如果ptr_已经指向具体的对象,则抱错否则ptr_=p
inline void reset(T* p); 如果ptr_已经指向具体的对象,则首先删除该对象的内存,并设置ptr_=p;
inline void clear(); 调用reset(NULL);
inline T& operator()(); 如果ptr_指向了具体的对象,则返回该对象的拷贝
inline const T& operator()() const; operator()的const版本
inline operator const T&() const; 返回一个T类型对象的const引用
inline T* operator->(); 返回ptr_指针,该指针指向的对象可修改
inline const T* operator->() const; 返回ptr_指针,该指针指向的内容不能修改
以上就是autoPtr的所有的功能。
评论