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



Download 1,38 Mb.
bet172/437
Sana22.02.2022
Hajmi1,38 Mb.
#89455
TuriРеферат
1   ...   168   169   170   171   172   173   174   175   ...   437
Bog'liq
word1

#include




  1. using namespace std;

2 :

  1. class MonsterDB




  1. {




  1. private:




  1. -MonsterDB() {}; // закрытый деструктор








  1. public:




  1. static void Destroylnstance(MonsterDB* plnstance)

    1 0 :

    {

    1 1 :

    // статический член класса может обратиться к закрытому

    12

    // деструктору

    delete plnstance;

    13




    14




  2. // ... несколько других методов












  1. int main ()








  1. MonsterDB* pMyDatabase = new MonsterDB();

Указатель this

237


  1. pMyDatabase -> member methods




  1. снимите комментирий со следующих строк, чтобы получить




  1. ошибку при компиляции




  1. delete pMyDatabase; // закрытый деструктор не может быть




    1. вызван




  1. для освобождения используйте статический метод MonsterDB::Destroylnstance(pMyDatabase);

return 0;

}


Этот фрагмент кода не имеет вывода.


Анализ

Цель кода — продемонстрировать, что класс, запрещающий создание своих экземпля­ р е в стеке, нуждается в закрытом деструкторе, как показано в строке 6, и статической оункции D e s t r o y l n s t a n c e (), как показано в строках 9 -13, используемой в функции - a m () (строка 28).


Указатель this

Указатель t h i s — это важнейшая концепция языка C++; зарезервированное ключе-зое слово t h i s применимо в рамках класса, который содержит адрес объекта. Другими словами, значение указателя t h i s — это & o b je c t. В пределах метода класса, когда вы вызываете другой метод, компилятор неявно передает ему в вызове указатель t h i s как невидимый параметр:




class Human

{
private:





  1. ... объявления закрытых членов void Talk (string Statement)

{
cout « Statement;

} !
public:




void IntroduceSelf ()
{
Talk("Bla bla");

}
};


Здесь представлен метод I n t r o d u c e S e l f (); использующий закрытый член T a lk () хтя вывода на экран выражения. В действительности компилятор внедряет указатель t h i s в вызов метода T a lk (), который выглядит как T a lk ( t h i s , "B la b l a " ).



  1. точки зрения программирования у указателя t h i s не слишком много областей при­ менения, но иногда он оказывается удобным. Например, у кода доступа к переменной Аде в пределах функции S e t Аде (), представленной в листинге 9.1, может быть такой вариант:




238

ЗАНЯТИЕ 9. Классы и объекты

void

SetAge(int

HumansAge)

{

this->Age = HumansAge; // то же, что и Age = HumansAge




ПРИМЕЧАНИЕ

Указатель this не передается в статические методы класса. Как и статические







функции, они не связаны с экземпляром класса. Статические методы совмест­







но используются всеми экземплярами.

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




Размер класса

Вы изучили основные принципы определения собственного типа с использованием ключевого слова c l a s s , позволяющие инкапсулировать атрибуты данных и методы, ра­ ботающие с этими данными. Оператор s i z e o f (), описанный на занятии 3, “Использо­ вание переменных, объявление констант”, используется для определения объема памяти



  1. байтах, занимаемого переменной определенного типа. Этот оператор применим и для классов, он в основном сообщает сумму байтов, занимаемых каждым атрибутом данных, содержавшимся в пределах объявления класса. В зависимости от используемого компи­ лятора оператор s i z e o f () может включать или не включать для некоторых атрибутов дополнения до границ слова. Ф ункции-члены и их локальные переменные не участвуют в определении размера класса. Рассмотрим листинг 9.12.



ЛИСТИНГ 9,12. Результат применения оператора sizeof () к классам и их экземплярам




  1. Download 1,38 Mb.

    Do'stlaringiz bilan baham:
1   ...   168   169   170   171   172   173   174   175   ...   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