Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ С\С++ _ что такое смарт-указатель

Автор: Litkevich Yuriy 5.5.2008, 9:31

может у него другое название есть?
чем он от обычного указателя отличается?

Автор: Andrew Selivanov 5.5.2008, 9:52

Цитата(Litkevich Yuriy @ 5.5.2008, 10:31) *
может у него другое название есть?
чем он от обычного указателя отличается?

Обычно его называют smart pointer :)
http://en.wikipedia.org/wiki/Smart_pointer
In computer science, a smart pointer is an abstract data type that simulates a pointer while providing additional features, such as automatic garbage collection or bounds checking. These additional features are intended to reduce bugs caused by the misuse of pointers while retaining efficiency. Smart pointers typically keep track of the objects that point to them for the purpose of memory management.

Грубо говоря, если ты например выделяешь память под объект в каком то одном месте, то ты должен отследить и все места, где его надо удалить да? А если возникнет ошибка, где то ты не там вывалишься... неплохо бы, чтобы объект удалился. Ну это если упрощать. Вообще это относится к концепции RAII (Resource Acquisition Is Initialization) http://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization

Типичные представители smart pointers - auto_ptr из стандартной библиотеки и набор из boost
http://www.boost.org/doc/libs/1_35_0/libs/smart_ptr/smart_ptr.htm

Автор: Tonal 5.5.2008, 10:12

По русски его обычно называют умный указатель. :)

Автор: Litkevich Yuriy 5.5.2008, 10:15

ага, т.е. это одно и тоже. про умный я уже читал.

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)