这是在VS2008编译器中使用的构造函数,用于从标准指针构造std::auto_ptr对象。
template<class _Ty>
class auto_ptr
{
public:
explicit auto_ptr(_Ty *_Ptr = 0) _THROW0() : _Myptr(_Ptr) {}
private:
_Ty *_Myptr;
};
为什么在上面使用了 explicit
关键字呢?是否有特别的原因?
换句话说,我为什么不能用下面这个方式初始化一个 auto_ptr
呢?
std::auto_ptr<Class A> ptr = new Class A;