kzhereb / knu-is-ooop2019

Materials for "Fundamentals of OOP" course
MIT License
3 stars 0 forks source link

T10.22. Чи можна знищити об’єкт/поле, доступне не за вказівником? #22

Open WAG13 opened 4 years ago

aoyako commented 4 years ago

Можна.

ClassName obj;
obj.~ClassName();
// Доведеться додати це поле, щоб уникнути помилки подвійного видалення.
new (&obj) ClassName();

Ще можна зменшувати область видимості, при виході з неї автоматично викликається деструктор.

AntonHladkiy commented 4 years ago

Зменшити область видимості щоб видалення об'єкту відбулося автоматично

RostyslavMV commented 4 years ago

Викликати видалення сміття вручну, присутнє в деяких мовах. Інших варіантів немає, можливо лише правильно скомпонувати програму, щоб зайві дані не були видимими, коли вони вже не потрібні.

i1red commented 4 years ago

Можна викликати деструктор явно

ilyakorenevskyi commented 4 years ago

зменшити область видимості