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



Download 1,95 Mb.
Pdf ko'rish
bet59/144
Sana24.02.2022
Hajmi1,95 Mb.
#223123
TuriРеферат
1   ...   55   56   57   58   59   60   61   62   ...   144
Bog'liq
C -Eldjer-Djeff-for-Real-Programmers-RUS-www.itlibitum.ru

 
95 
public: 
void 
DoSomething(); 
void 
DoSomethingElse(); 
}; 
PFoo1::PFoo1() : foo(new Foo1) 
{} 
PFoo1::PFoo(const PFoo1& pf) : foo(new Foo1(*(pf.foo))) 
{} 
PFoo1::~PFoo() 

delete 
foo; 

PFoo1& PFoo1::operator=(const PFoo1& pf) 

if (this != &pf) { 
delete 
foo; 
foo = new Foo1(*(pf.foo)); 

return 
*this; 

void PFoo1::DoSomething() 

foo->DoSomething(); 

void PFoo1::DoSomethingElse() 

foo->DoSomethingElse(); 

Foo1::Foo1() 


void Foo1::DoSomething() 

cout << “Foo::DoSomething()” << endl; 

void Foo1::DoSomethingElse() 

cout << “Foo::DoSomethingElse()” << endl; 



 96 
Видите, что здесь происходит? Для клиента класс 
Foo
перестает существовать. Для всех практических 
целей указатель стал самим объектом. С таким же успехом мы могли все переименовать, убрать 
Р
перед указателем и заменить имя 
Foo
чем-ни6удь более закрытым и загадочным. Единственное, что 
говорит о существовании второго класса, — предварительное объявление 
class Foo;

Цена всего происходящего — вызов не подставляемых (noninline) функций в каждой функции класса 
указателя. Для некоторых немногочисленных приложений и классов даже эта малая цена может стать 
неприемлемой. В таких случаях существуют две альтернативы для повышения скорости: 
использование умных указателей на базе оператора 
->
и использование интерфейсных указателей с 
занесением объявления класса указываемого объекта в файл .h и отказом от всех преимуществ 
инкапсуляции. Как вы убедитесь в оставшейся части этой главы, второй вариант все же имеет 
некоторые достоинства. 
Изменение интерфейса 
Одно из преимуществ интерфейсных указателей — в том, что они фактически позволяют изменить 
интерфейс указываемого объекта без внесения изменений в его класс. Интерфейс, представленный 
интерфейсным указателем, находится полностью в вашем распоряжении; вы можете исключить из него 
некоторые функции указываемого объекта, изменить сигнатуры, добавить ваши собственные дополни-
тельные функции и просто хорошо провести время, заново изобретая указываемый объект. 
Грани 
Многие библиотеки классов (особенно связанные с графическим интерфейсом пользователя) содержат 
большие классы из десятков, а то и сотен функций. Визуальная часть экрана в них называется по-
разному — видом, окном или панелью. Ниже показан типичный набросок класса, который представляет 
это отображаемое нечто, как бы оно ни называлось. 
class View { // На практике будет производным от другого класса 
protected: 
// 
Download 1,95 Mb.

Do'stlaringiz bilan baham:
1   ...   55   56   57   58   59   60   61   62   ...   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