2012-06-07 4 views
0

Можно создать дубликат:
Which kind of pointer do I use when?станд :: auto_ptr против станд :: tr1 :: shared_ptr

Я читал, что std::auto_ptr является устаревшим, так что вы должны использовать вместо std::tr1::shared_ptr. Поскольку я читаю разницу, std::tr1::shared_ptr имеет счетчик ссылок, в то время как std::auto_ptr не имеют, поэтому копирование или присвоение изменяет ресурс владельца, а источник передает право собственности на место назначения. Разве это единственная разница?

ответ

2

Умный указатель, который ближе всего соответствует одной семантике собственности auto_ptr, является std::unique_ptr. Это должно использоваться предпочтительно более std::shared_ptr, если доступно. См. here.

+0

Нет никакого 'std :: smart_ptr'. – Fanael

+0

@Fanael благодарит за это! – juanchopanza