C++: библиотека программиста



Download 1,95 Mb.
Pdf ko'rish
bet53/144
Sana24.02.2022
Hajmi1,95 Mb.
#223123
TuriРеферат
1   ...   49   50   51   52   53   54   55   56   ...   144
Bog'liq
C -Eldjer-Djeff-for-Real-Programmers-RUS-www.itlibitum.ru

 
83 
Если оба предположения верны, для хранения обоих адресов можно использовать одну переменную 
класса. Если младший бит установлен (то есть если «адрес» четный), остальные 31 бит определяют 
дисковый адрес. Когда младший бит сброшен, все 32 бита определяют адрес памяти. Если вам 
потребуется не только считывание, но и запись, объекту лучше знать свой собственный дисковый 
адрес, поскольку адрес, хранящийся в указателе, при считывании портится. 
За дымовой завесой кэширующих указателей прячется интересная концепция: умные указатели могут 
использоваться как общее средство для доступа к объектам независимо от того, где находится объект 
и существует ли он вообще. Углубляясь в джунгли C++, мы будем рассматривать эту концепцию под 
разными углами, пока она не превратится в один из принципов Дао, о которых я упоминал во 
вступительной главе. 



Ведущие 
указатели и 
дескрипторы
После совсем непродолжительного знакомства с умными указателями мы успели наткнуться на целый 
ряд фундаментальных проблем. Многие из них связаны с тем фактом, что на один объект может 
ссылаться любое количество умных указателей. Как в этом случае узнать, когда можно удалить 
объект? Кто ведет статистику использования объекта и обращается к ней при необходимости (если вам 
вдруг понадобится такая возможность)? Кто создает объект? Что означает присваивание одного умного 
указателя другому? Заиграет ли наконец в этом сезоне наша любимая команда или она снова разобьет 
наши сердца? Ниже вы найдете ответы на эти и многие другие интригующие вопросы. 
Семантика ведущих указателей 
При работе с умными указателями имеется один важный частный случай — когда два умных указателя 
не должны одновременно ссылаться на один объект. Между указателем и объектом, на который он 
ссылается, существует однозначное соответствие (за исключением особого случая умных указателей, 
ссылающихся на 
NULL
). Если в программном дизайне действует такое ограничение, говорят, что 
реализуется семантика ведущих указателей (master pointers). 
Конечно, можно просто объявить через местную газету, что указатели должны использоваться таким и 
только таким образом. А можно защитить ваших пользователей от самих себя и подкрепить 
семантические правила языковыми средствами C++. Если вы мудро выберете второй вариант, придется 
учесть следующее: 
1. Указываемые объекты должны создаваться указателями в конструкторах. 
2. Деструктор указателя должен удалять указываемый объект. 
3. Конструктор копий должен создавать точную копию указываемого объекта. 
4. Оператор присваивания 
operator=
должен удалять текущий указываемый объект, 
находящийся слева от него, и заменять его копией указываемого объекта справа. 
Кроме того, было бы разумно сделать еще две вещи: 
5. Ограничить доступ к конструкторам класса указываемого объекта. 
6. Создавать указатели с помощью производящих функций (factory functions). 
Обе рекомендации будут подробно рассмотрены в последующих разделах. Прототип ведущего 
указателя, который мы собираемся воплотить, выглядит так: 
template  
class MP { 
private: 
Type* 
t; 
public: 

Download 1,95 Mb.

Do'stlaringiz bilan baham:
1   ...   49   50   51   52   53   54   55   56   ...   144




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