C++ за 21 день седьмое издание


Интеллектуальный указатель списка ссылок



Download 1,38 Mb.
bet399/437
Sana22.02.2022
Hajmi1,38 Mb.
#89455
TuriРеферат
1   ...   395   396   397   398   399   400   401   402   ...   437
Bog'liq
word1

Интеллектуальный указатель списка ссылок

Интеллектуальный указатель списка ссылок (reference-linked) относится к тем, которые не считают количество ссылок, используя объект, а скорее желают знать, когда количество ссылок достигнет нуля, чтобы можно было освободить объект.


Они называются указателями списка ссылок потому, что их реализация основана на двухсвязном списке. Когда новый интеллектуальный указатель создается как копия суще­ ствующего, он добавляется в список. Когда интеллектуальный указатель выходит из об­ ласти видимости или удаляется, деструктор удаляет интеллектуальный указатель из этого списка. Такой указатель, подобно указателю подсчета ссылок, страдает от проблем, вы­ званных циклической зависимостью.
Деструктивное копирование


Деструктивное копирование (destructive сору) — это механизм, который при копирова­ нии интеллектуального указателя передает получателю собственность на обрабатываемый объект полностью, а сам освобождается:


destructive_copy_smartptr pSmartPtr (new SampleClass ());


SomeFunc (pSmartPtr); // Собственность передается SomeFunc // He используйте больше pSmartPtr в вызывающей стороне!

Хотя принцип этого механизма не назовешь интуитивно понятным, преимущ ество использования интеллектуального указателя деструктивного копирования заключается в том, что он гарантирует существование в любой момент времени только одного активного указателя на объект. Это очень хорошо подходит для возвращения указателя из функций,





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

Реализация указателей деструктивного копирования отличается от рекомендованных стандартных подходов программирования на языке C++ (листинг 26.3).


Указатель std: :auto_ptr является, безусловно, наиболее популярным (или известным, в зависимости от вашей точки зрения) указателем деструктивного копирования. Такой интеллектуальный указатель бесполезен после того, как он был передан функции или скопирован в другой.


Использование указателя std: :auto_ptr в языке C++И не рекомендовано. Вместо него следует использовать указатель std: :unique_ptr, который не может быть передан по значению благодаря его закрытому конструктору копий





      1. оператору присвоения копии. Он может быть передан как аргумент только по ссылке.


  1. И СТИ Н Г 26 .3 . Типичный интеллектуальный указатель деструктивного копирования




Download 1,38 Mb.

Do'stlaringiz bilan baham:
1   ...   395   396   397   398   399   400   401   402   ...   437




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish