Сижу изачаю стандартную библиотеку С++. Дошел до шаблона auto_ptr<>. Не могу понять для чего нужен вспомогательный класс auto_ptr_ref и связанный с ним преобразования. Более конкретно вот кусок определения шаблона класса auto_ptr<> из заголовка <memory>
template <typename _Tp>
class auto_ptr {
private:
_Tp* _M_ptr;
public:
typedef _Tp element_type;
// все лешнее вырезано :)
auto_ptr(auto_ptr_ref<element_type> __ref) throw()
: _M_ptr(__ref._M_ptr) { }
auto_ptr& operator=(auto_ptr_ref<element_type> __ref) throw()
{
if (__ref._M_ptr != this->get())
{
delete _M_ptr;
_M_ptr = __ref._M_ptr;
}
return *this;
}
template<typename _Tp1>
operator auto_ptr_ref<_Tp1>() throw()
{ return auto_ptr_ref<_Tp1>(this->release()); }
template<typename _Tp1>
operator auto_ptr<_Tp1>() throw()
{ return auto_ptr<_Tp1>(this->release()); }
}; //конец объявления auto_ptr<>
еще более круто было бы если чья-то свтлая голова написала что происходит при вызове типа:
auto_ptr<int> f();
int main()
{
auto_ptr<int> p = f();
}
я имею ввиду не механизм передачи влядения, а именно какие конструкторы и преобразования вызываются в данной кончтрукции.
Спасибо
Ответ на:
комментарий
от mumg
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от klalafuda
Ответ на:
комментарий
от mumg
Ответ на:
комментарий
от klalafuda
Ответ на:
комментарий
от klalafuda
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум auto_ptr в С++ (2002)
- Форум Как создать массив в С++ (2022)
- Форум Alexandescu Modern C++... длинное название: странное противоречие (2020)
- Форум Реализуйте класс SharedPtr (2014)
- Форум C++ велосипед библиотеки хэш-функций (2013)
- Форум Как смержить дублирующийся код? (решение: использовать gold) (2014)
- Форум const поля однократной инициализации в классе и оптимизация (2022)
- Форум C++ STL: ostream_iterator (2006)
- Форум Перекрёстные ссылки в иерархии. Композиция. Нуб. (2016)
- Форум Помогите с заданием (2015)