Время жизни
Экземпляры класса умирают когда интерпретатор уйдёт из области видимости, в которой объявлена переменная.
Чтоб освободить принудительно освободить ссылку ей нужно присвоить другое значение или null.
class A {
string s;
A(string s){
[[[this|this.html]]].s = s;
}
[[[~|destructor.html]]]A(){
print(s + " destruct\n");
}
}
A@ a; // [[[Глобальные переменные|var.html#global]]] живут до конца игры
void [[[main|main.html]]](){
@a = A("1"); // Создаём экземпляр 1, который не будет уничтожен после завершения функции
@a = A("2"); // Уничтожаем экземпляр 1 поместив на его место экземпляр 2
@a = null; // Принудительно уничтожаем экземпляр 2
A@ b = A("3"); // Создаём экземпляр 3, который будет уничтожен после завершения функции
/* Вывод консоли:
1 destruct
2 destruct
3 destruct
*/
}
Last modified: 16 October 2024