我尝试理解这段代码(取自这里):
template <class T> class auto_ptr
{
T* ptr;
public:
explicit auto_ptr(T* p = 0) : ptr(p) {}
~auto_ptr() {delete ptr;}
T& operator*() {return *ptr;}
T* operator->() {return ptr;}
// ...
};
我在理解这行代码时遇到问题:explicit auto_ptr(T* p = 0) : ptr(p) {}
.
据我了解,通过这一行,我们尝试定义一个具有一个pointer-to-object-of-T-class
类型参数的构造函数。然后我们有= 0
. 那是什么?它是默认值吗?但是如何0
才能成为指针的默认值(指针应该将地址作为值,而不是整数)。