auto_ptr удерживается от использования?

  1. auto_ptr будет удерживаться от использования во входящем стандарте C++?
  2. unique_ptr должен использоваться для передачи владения вместо shared_ptr?
  3. Если unique_ptr не находится в стандарте, то я должен использовать shared_ptr вместо этого?
77
задан Peter Alexander 8 March 2010 в 19:57
поделиться

3 ответа

UPDATE: Этот ответ был написан в 2010 году, и, как ожидалось, std::auto_ptr был устаревшим. Совет полностью актуален.

В C++0x std::auto_ptr будет устаревшим в пользу std::unique_ptr. Выбор интеллектуального указателя будет зависеть от вашего случая использования и ваших требований, при этом std::unique_ptr с семантикой перемещения для единственного владения может использоваться внутри контейнеров (используя семантику перемещения) и std::shared_ptr, когда владение является общим.

Вы должны стараться использовать интеллектуальный указатель, который лучше всего подходит к ситуации, выбор правильного типа указателя дает другим программистам представление о вашем проекте.

76
ответ дан 24 November 2019 в 10:59
поделиться

Нет, не рекомендуется. Может быть, если C ++ 0x когда-нибудь будет принят. И его реально всегда поддержат. Я не верю, что какая-либо устаревшая функция когда-либо была исключена из реальных реализаций C ++.

4
ответ дан 24 November 2019 в 10:59
поделиться

Да, с сегодняшнего дня auto_ptr будет устаревшим в C++0x и вам следует использовать unique_ptr вместо него. Из последнего проекта стандарта (n3035), раздел D.9

Шаблон класса auto_ptr является устаревшим. [ Примечание: Шаблон класса unique_ptr (20.9.10) обеспечивает лучшее решение. -конец примечания ]

Пока стандарт не ратифицирован, всегда есть вероятность, что комитет пересмотрит это решение, хотя я считаю это маловероятным для данного решения.

22
ответ дан 24 November 2019 в 10:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: