Конспект-справочник 'Моделирование на C++'


Конструкторы и деструктор



Download 1,26 Mb.
Pdf ko'rish
bet43/62
Sana20.03.2022
Hajmi1,26 Mb.
#504043
1   ...   39   40   41   42   43   44   45   46   ...   62
Конструкторы и деструктор 
Все объекты имеют определенный срок своего существования и 
соответственно момент создания и уничтожения. Для создания объекта могут 
потребоваться определенные компьютерные ресурсы, такие как оперативная 
память, для хранения полей объекта, объекты и ресурсы операционной 
системы, файлы, периферийные устройства или каналы коммуникаций. 
Выделение и инициализация всех необходимых ресурсов осуществляется в 
момент конструирования объекта. Освобождение ресурсов происходит при 
уничтожении объекта. 
Для конструирования и уничтожения объектов класса есть специальные 
методы класса - конструкторы и деструктор. Эти методы не возвращают 
значений и даже не имеют типа 'void'. Имя конструктора и деструктора 
совпадает с именем класса, перед деструктором ставится символ '~'. 
Деструктор у классса может быть только один, а конструкторов 
несколько. Все конструкторы подразделяются на четыре типа: * конструктор по 
умолчанию - конструктор без параметров. Он может быть только в 
единственном числе. Его создает компилятор если пользователь не создал ни 
одного конструктора самостоятельно * конструктор инициализации - 
конструктор с параметрами. Таких конструкторов, различающихся набором 
параметров, у одного класса может быть несколько. * конструктор копирования 
с параметром вида 'const T&', где 'T' - класс для которого создается конструктор 
* конструктор перемещения с параметром вида 'T&&', где 'T' - класс для 
которого создается конструктор 
Пример определения различных конструкторов для класса 'Example': 
// Ниже перечислено содержимое заголовочного файла Example.h 
// Объявление класса 
class Example 

public: 
Example(); 
// Конструктор по умолчанию - без параметров 
Example(double x, double y); // 
Конструктор инициализации - с параметрами 
Example(const Example&);
// Конструктор копирования - с
// 
параметром 'const Example&' 
Example& operator=(const Example&); 
// Оператор присваивания
// 
(по сути, тоже копирования) 
Example(Example&&); 
// Конструктор перемещения -
// 
с параметром 'Example&&' 
Example& operator=(Example&&); // 
Оператор перемещения 
~Example(); 
// Деструктор всего один и параметров у него нет 
}; 
Конструкторы и деструктор также как и другие методы могут быть 
открытыми, закрытыми или защищенными, при этом нужно понимать, что 
объект с закрытым конструктором может быть создан только в том контексте, 
68 


который имеет доступ к закрытым членам класса, например, из дружественной 
функции. 
Конструкторы и деструктор определяются также как и другие методы 
класса. Их выделяет только отсутствие возвращаемого значения. 
// Ниже пример содержимого файла реализации Example.cpp 
// Определение конструктора 
Example::Example() 

x = 0; 
y = 0; 

Если пользователь не определил конструктор самостоятельно, 
компилятор создаст при необходимости конструктор по умолчанию и 
конструктор копирования за него. Если пользователем определен хотя бы один 
конструктор, компилятор не вмешивается в работу программиста и 
автоматически не создает ничего. 
То же самое относится и к деструктору: если пользователь его не 
определил, то деструктор будет создан автоматически компилятором. Но при 
этом надеяться, что он выполнит сложные действия по очистк памяти и 
освобождению ресурсов не стоит - будет только освобождена память, 
необходимая для хранения объекта. Динамическая память для полей класса и 
другие ресурсы не освобождаются. 
В примере показаны ситуации, в которых вызывается тот или иной 
конструктор: 

Download 1,26 Mb.

Do'stlaringiz bilan baham:
1   ...   39   40   41   42   43   44   45   46   ...   62




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