more effective c++智能指针(28)

智能指针了:构造、赋值、析构:++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
template <class T>
class auto_ptr
{
public:
auto_ptr(T* ptr = 0) : pointee(ptr) {}
auto_ptr(auto_ptr<T>& rhs);
auto_ptr<T>& operate= (auto_ptr<T>& rhs);
~auto_ptr() {delete pointee;}
private:
T* pointee;
/* data */
};
//可以看出,使用时用f
//auto_ptr<TreeNode> ptnq(new TreeNode);便可以了。
///
template<class T>
auto_ptr<T>:::auto_ptr(auto_ptr<T>& rhs)
{
pointee = rhs.pointee;
rhs.pointee = 0;//因为实现的是auto,被复制后拒绝前一个变量访问
}
template<class T>
auto_ptr<T>& auto_ptr<T>::operate= (auto_ptr<T>& rhs)
{
if (this == &rhs)
{
return *this; //这个赋值函数处理的很好,以后赋值函数添加上
}
delete pointee;
。。。。
。。。。
return *this;
}