khai báo của auto_ptr từ Thư viện chuẩn C++Mục đích đằng sau cấu trúc rỗng?
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>) 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();
};
}
Tôi không hiểu mục đích của phần này:
template <class Y> struct auto_ptr_ref {};
Nếu không tuyên bố bất kỳ biến, làm thế nào có thể những có giá trị:
auto_ptr& operator=(auto_ptr_ref<X>) throw();
và các mục này:
auto_ptr(auto_ptr_ref<X>) throw();
template <class Y> operator auto_ptr_ref<Y>() throw();
Edit: và cũng (Tôi chỉ cần thông báo) Tôi không hiểu làm thế nào "điều hành" được sử dụng cho hai dòng cuối cùng. Không phải cú pháp giống như "toán tử trả về kiểu trả về", ở đâu là kiểu trả về? toán hạng?
ah tôi chỉ đơn giản là không bao giờ biết về điều đó mặc dù (vẫn còn mới đến đây) – user385261
@ user385261: Khi bạn mới vào trang web, hãy đọc Câu hỏi thường gặp của họ. Nó không có cho đá. –