Знищення об’єкту

Delphi site: daily Delphi-news, documentation, articles, review, interview, computer humor.

Після використання екземпляра об'єкта слід звільнити виділену йому пам'ять з допомогою методу Free. Цей метод спочатку перевіряє, чи екземпляр об'єкта не дорівнює значенню nil, і потім викликає деструктор об'єкта - метод Destroy. Дія деструктора дії конструктора, тобто. він звільняє всю виділену пам'ять та виконує інші дії зі звільнення захоплених конструктором об'єкта ресурсів. Синтаксис виклику методу Free простий.

Зверніть увагу, що на відміну від виклику конструктора, виклик деструктора виконується за допомогою посилання на екземпляр, а не на тип. Крім цього, намагайтеся не використовувати безпосередній виклик методу Destroy. Безпечніше і коректніше викликати метод Free, який тільки після перевірки наявності об'єкта викликає метод Destroy для руйнування об'єкта. Виклик методу Destroy для неіснуючого об'єкта може мати непередбачувані наслідки.

Наприклад, у мові С++ деструктор екземпляра статично створеного об'єкта викликається автоматично, коли цей екземпляр залишає область видимості. У разі динамічного створення екземпляра (за допомогою оператора new) об'єкт необхідно знищити самостійно, використовуючи оператор delete. Однак у Delphi всі екземпляри об'єкта - динамічні, і програміст повинен видаляти їх сам. Необхідно знищувати все, що було створено у програмі. Виняток із цього правила становлять об'єкти, що належать іншим об'єктам. Цей тип об'єктів знищується автоматично. Ще одним винятком є ​​об'єкти з керованим часом життя, які мають власний лічильник посилань (наприклад, похідні від класів TlnterfacedObject або TComObject), які автоматично видаляються післяліквідації останнього посилання ними.

У С++ реалізована концепція дружніх класів, тобто. класів, яким дозволено доступ до закритих даних та функцій іншого класу. У мові С++

Під час створення об'єкта з допомогою конструктора проводиться ініціалізація всіх полів об'єкта. Числові поля будуть обнулені, покажчики приймуть значення п!1, а рядки будуть порожні.