AngelScript Help

Деструктор класса

Обычно нет необходимости реализовывать деструктор класса, поскольку по умолчанию освобождаются все ресурсы, которыми располагает объект при его уничтожении. Однако могут возникнуть ситуации, когда при уничтожении объекта необходимо выполнить более явную процедуру очистки.

Деструктор объявляется так же, как и конструктор по умолчанию, за исключением того, что перед ним должен стоять символ ~.

class A { string s; A(string s){ [[[this|this.html]]].s = s; } ~A(){ print(s); } } A a("a"); // Класс, присвоеный [[[глобальной переменной|var.html#global]]] не будет уничтожен до конца игры void [[[main|main.html]]](){ A b("b"); print("1"); // После исполнения функции будет вызван деструктор // В консоль будет выведено 1b }

Обратите внимание, что управление памятью с помощью сборки мусора не даёт легко предсказать, когда будет выполнен деструктор.

Деструктор будет вызван только один раз, даже если объект будет воскрешен путем добавления ссылки на него во время выполнения деструктора.

Невозможно напрямую вызвать деструктор. Если вам нужно иметь возможность напрямую вызывать деструктор, то для этого следует реализовать публичный метод.

Last modified: 16 October 2024