4
auto_ptr에 템플릿 복사 생성자와 대체 연산자 함수가있는 이유는 무엇입니까?왜 템플릿 복사 생성자가 있고 auto_ptr에서 연산자 함수를 재정의합니까?
C++의 ISO 표준은 auto_ptr에 대해 다음 인터페이스를 지정합니다. (이것은 2003 표준에서 바로 복사됩니다.)
namespace std {
template <class Y> struct auto_ptr_ref {};
template<class X> class auto_ptr {
public:
typedef X element_type;
// 20.4.5.1 construct/copy/destroy:
explicit auto_ptr(X* p =0) throw();
auto_ptr(auto_ptr&) throw();
template<class Y> auto_ptr(auto_ptr<Y>&) throw();
auto_ptr& operator=(auto_ptr&) throw();
template<class Y> auto_ptr& operator=(auto_ptr<Y>&) throw();
auto_ptr& operator=(auto_ptr_ref<X> r) throw();
~auto_ptr() throw();
// 20.4.5.2 members:
X& operator*() const throw();
X* operator->() const throw();
X* get() const throw();
X* release() throw();
void reset(X* p =0) throw();
// 20.4.5.3 conversions:
auto_ptr(auto_ptr_ref<X>) throw();
template<class Y> operator auto_ptr_ref<Y>() throw();
template<class Y> operator auto_ptr<Y>() throw();
};
이유가 있습니다 :
template<class Y> auto_ptr(auto_ptr<Y>&) throw();
난 그냥 auto_ptr(auto_ptr&) throw();
이 확인 생각합니다.
분명히 이러한 방법은 (아마도) 다른 템플릿 유형으로 작동합니다. 귀하의 버전은 동일합니다. – deviantfan