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



Download 1,26 Mb.
Pdf ko'rish
bet44/62
Sana20.03.2022
Hajmi1,26 Mb.
#504043
1   ...   40   41   42   43   44   45   46   47   ...   62
// Вызов конструктора по умолчанию 
Example x, y; 
Example x{}; 
Example *x = new Example; 

// Вызов конструктора инициализации 
Example x{1.0, 2.0}; 

// 
Вызов конструктора копирования 
Example y{x}; 
Example y = x; 
 
// Вызов конструктора перемещения 
Example z = std::move(y); 
Example z = func(); 
Оператор присваивания и перемещения по смыслу выполняет 
аналогичные конструкторам копирования и перемещения действия с отличием 
в том, что операторы вызываются для уже сконструированных объектов, 
например, вне деклараций. 
69 


// Вызов оператора копирования 
y = x; 
 
// Вызов оператора перемещения 
z = std::move(y); 
z = func(); 
Деструктор вызывается при выходе объекта из области видимости или 
явном удалении оператором 'delete'. 
Example x; 
// глобальный объект, деструктор вызывается при
// 
завершении программы 
void f(Example e);
int main() 

Example y; 
// деструктор вызывается при выходе из main() 
Example z = new Example(); 
 
f(y); // 'y
' передается по значению т.е. делается копия и для этого
// 
вызывается конструктор копирования 
delete z; // 
вызов деструктора оператором 'delete' при уничтожении
// 
динамического объекта 

// деструктор также можно вызвать как обычный метод:
// 'z->~Example
();' или
// 
так 'z->Example::~Example();' 

 
// определение функции f 
void f(Example obj) 


// деструктор формального параметра 'obj'- копии фактического
// 
параметра 'y' - будет вызван при выходе из функции. 
 
Example x; 
// деструктор локального объекта будет вызван при
// 
выходе из функции
... 

Конструктор может быть явным образом запрещен в классе. Например, 
можно явно запретить создание объектов без параметров инициализации и 
запретить конструктор по умолчанию. Аналогично можно запретить операции 
копирования и перемещения. Для этого используется ключевое слово 'delete' в 
строго определенном контексте, отличающемся от его использования для 
удаления объекта. 'delete' может быть использован для любого метода. 
Иногда возникает необходимость явно указать на использование 
конструктора или оператора, создаваемых компилятором. Для этого 
70 


используется ключевое слово 'default'. В примере ниже пользователь, создав 
конструктор инициализации 'Example(double x, double y)', уже не может 
рассчитывать на то, что компилятор сгенерирует конструктор по умолчанию и 
конструктор копирования. Чтобы все же ими воспользоваться, нужно явно 
указать их использование признаком 'default'. 
У конструкторов перемещения и инициализации способов их задать по 
умолчанию нет. Связано это с тем, что их невозможно однозначно определить 
на основе декларации класса. При инициализации возможно использование 
разнообразных параметров, при перемещении - процедур очистки 
перемещаемого объекта. С копированием и конструктором по умолчанию все 
понятно: копирование объектов осуществляется побитово, инициализация по 
умолчанию - нулями. 
Конструктор может быть указан как вызываемый явным образом. 

Download 1,26 Mb.

Do'stlaringiz bilan baham:
1   ...   40   41   42   43   44   45   46   47   ...   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