UFO: Alien Invasion
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
autoptr.h
Go to the documentation of this file.
1 #pragma once
2 
3 template<typename T> class AutoPtr
4 {
5  public:
6  explicit AutoPtr (T* const p = 0) :
7  p_(p)
8  {
9  }
10 
12  {
13  if (p_)
14  delete p_;
15  }
16 
17  void deallocate ()
18  {
19  *this = 0;
20  }
21 
22  T* release ()
23  {
24  T* const p = p_;
25  p_ = 0;
26  return p;
27  }
28 
29  void operator = (T* const p)
30  {
31  if (p_)
32  delete p_;
33  p_ = p;
34  }
35 
36  T* operator -> () const
37  {
38  return p_;
39  }
40 
41  T& operator * () const
42  {
43  return *p_;
44  }
45 
46  operator bool () const
47  {
48  return p_;
49  }
50 
51  operator T* () const
52  {
53  return p_;
54  }
55 
56  private:
57  T* p_;
58 
59  AutoPtr (const AutoPtr&); /* no copy */
60  void operator = (AutoPtr&); /* no assignment */
61 };
T * p_
Definition: autoptr.h:57
AutoPtr(T *const p=0)
Definition: autoptr.h:6
T * release()
Definition: autoptr.h:22
Definition: autoptr.h:3
T * operator->() const
Definition: autoptr.h:36
T & operator*() const
Definition: autoptr.h:41
~AutoPtr()
Definition: autoptr.h:11
void deallocate()
Definition: autoptr.h:17
void operator=(T *const p)
Definition: autoptr.h:29