Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.92
Buckstabue
175 / 124 / 6
Регистрация: 12.01.2012
Сообщений: 624
#1

Как использовать auto_ptr? - C++

21.02.2012, 22:05. Просмотров 1558. Ответов 4
Метки нет (Все метки)

Ищу, ищу, но нигде не могу найти на русском, да и на буржуйском, толковое описание использования auto_ptr. Везде только какие-то сверхсложные для моего понимания конструкции, где один auto_ptr объект ссылается на другой, я так и с обычными указателями, вроде, не работаю. И всякие сложные, там, композиции этих auto_ptr наподобие:
C++
1
2
3
4
5
6
7
8
9
class A
{
   auto_ptr<B> ptr<new B>;
}
 
class B
{
   auto_ptr<A> ptr<new A>
}
И ничего не сказано про самое наибанальное и наираспростаненного использование, например, для сборки мусора в функции, про многомерные массивы, насколько отличается этот тип указателей от обычных, вопросы производительности, подводные камни и т.д.
P.S. да и вообще непонятно зачем объявлять auto_ptr в качестве элементов данных, ведь есть же ещё ведь, вроде, деструкторы
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.02.2012, 22:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как использовать auto_ptr? (C++):

Auto_ptr - C++
Есть пару простых классов , раньше использовал простые указатели сейчас решил воспользоватся auto_ptr. В классе Duck есть : ...

Класс auto_ptr - C++
Добрый день. Вот мой вариант реализации: template&lt;class T&gt; class Auto_ptr { public: Auto_ptr(T* p) : pointer(p) { } ...

констанстность auto_ptr - C++
auto_ptr&lt;Nod&gt;/*Nod**/ m_pRoot; void Insert1(auto_ptr&lt;Nod&gt;/*Nod**/ pRoot, int iValue){ if(m_pRoot.get() == 0) m_pRoot.get()...

Отличие get() и release() у auto_ptr - C++
Вопрос,конечно,глупой. Но не могу разобраться. В чём всё таки различение между auto_ptr&lt;int&gt; pi(new int(24)); cout&lt;&lt;pi.release();...

Auto_ptr для хэндлов - C++
Необходимо придумать инструмент для работы с хэндлами файлов (аналог auto_ptr). Может кто-то что-то подобное уже делал?

Передача auto_ptr по ссылке - C++
Передача auto_ptr по ссылке противоречит концепции владения. Нельзя быть полностью уверенным в том, что функция, получающая auto_ptr по...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
21.02.2012, 22:22 #2
auto_ptr уже не входит в стандарный набор библиотек С++

Цитата Сообщение от Buckstabue Посмотреть сообщение
P.S. да и вообще непонятно зачем объявлять auto_ptr в качестве
элементов данных, ведь есть же ещё ведь, вроде, деструкторы
и чё? деструктор не занимается удаление самого объекта
Buckstabue
175 / 124 / 6
Регистрация: 12.01.2012
Сообщений: 624
21.02.2012, 22:32  [ТС] #3
Ясно. А есть ли какие-нибудь стандартные библиотеки для сборки мусора?
Mayonez
380 / 272 / 21
Регистрация: 26.12.2009
Сообщений: 875
21.02.2012, 23:26 #4
.net
HardMorg
3 / 26 / 3
Регистрация: 29.08.2010
Сообщений: 204
22.02.2012, 01:59 #5
Цитата Сообщение от Buckstabue Посмотреть сообщение
Ищу, ищу, но нигде не могу найти на русском, да и на буржуйском, толковое описание использования auto_ptr. Везде только какие-то сверхсложные для моего понимания конструкции, где один auto_ptr объект ссылается на другой, я так и с обычными указателями, вроде, не работаю. И всякие сложные, там, композиции этих auto_ptr наподобие:
C++
1
2
3
4
5
6
7
8
9
class A
{
   auto_ptr<B> ptr<new B>;
}
 
class B
{
   auto_ptr<A> ptr<new A>
}
И ничего не сказано про самое наибанальное и наираспростаненного использование, например, для сборки мусора в функции, про многомерные массивы, насколько отличается этот тип указателей от обычных, вопросы производительности, подводные камни и т.д.
P.S. да и вообще непонятно зачем объявлять auto_ptr в качестве элементов данных, ведь есть же ещё ведь, вроде, деструкторы
C++
1
2
3
4
5
6
7
8
int main() {
 
    { 
         auto_ptr<int> p(new int(5));
         cout << *p;
    }
    //  в этом участке кода память будет освобождена, потому что обьект р выйдет за область и вызовется конструктор который освободит память, нам не нужно писать delete ...
}
http://www.rsdn.ru/article/cpp/smartptr.xml
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.02.2012, 01:59
Привет! Вот еще темы с ответами:

Сократить объявление auto_ptr для вновь создаваемого объекта - C++
Кстати, может кто подскажет... - в 3-й строке примера (std::autoptr...) можно как-то сократить запись, чтоб не повторять несколько раз new...

Оставить все как есть || использовать парсер xml || или использовать struct - C++
Собственно имеется код... #include &lt;io.h&gt; #include &lt;string&gt; #include &lt;vector&gt; #include &lt;fstream&gt; #include &lt;iomanip&gt; #include...

Как правильно вызвать метод в С++ и как использовать команду goto в default - C++
#include &lt;iostream&gt;; #include &lt;conio.h&gt;; using namespace std; void main() { setlocale(LC_ALL, &quot;Rus&quot;); calculate(); ...

как объявить правильно tr и как его использовать при вызове функции? - C++
main.cpp case 8: cout &lt;&lt; &quot;Firs trapec # is: &quot;; cin &gt;&gt; k; k = k - 1; cout &lt;&lt; &quot;Second trapec # is: &quot;; cin &gt;&gt; j;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
22.02.2012, 01:59
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru