Почему в таком же временном выражении при создании перечислителя у последнего вызывается деструктор после отработки цикла, а при использовании операторов - нет? Где здесь логика? Подобные вещи должны обрабатываться однотипно.
Операторы могут быть не только для классов, поэтому как раз правило ...
Найдено 4 результата
- 03.01.2017 13:14:45
- Форум: Free Pascal Compiler
- Тема: Вопрос про освобождение памяти при перегрузке операторов
- Ответы: 30
- Просмотры: 32111
- 01.01.2017 12:10:30
- Форум: Free Pascal Compiler
- Тема: Вопрос про освобождение памяти при перегрузке операторов
- Ответы: 30
- Просмотры: 32111
Re: Вопрос про освобождение памяти при перегрузке операторов
Здравствуйте, уважаемые форумчане и с Новым Годом Вас!
Вижу, что тема вызвала много откликов, а значит интересна. Почерпнул много необычных, нестандартных приемов, за что отдельное огромное спасибо участникам. Но начинал я эту тему не для того, чтобы понять, как обойти ограничения языка - от ...
Вижу, что тема вызвала много откликов, а значит интересна. Почерпнул много необычных, нестандартных приемов, за что отдельное огромное спасибо участникам. Но начинал я эту тему не для того, чтобы понять, как обойти ограничения языка - от ...
- 27.12.2016 10:23:20
- Форум: Free Pascal Compiler
- Тема: Вопрос про освобождение памяти при перегрузке операторов
- Ответы: 30
- Просмотры: 32111
Re: Вопрос про освобождение памяти при перегрузке операторов
Объекты вместо классов и подсчет ссылок рассматривал. К сожалению, не подходит ни то, ни другое. Первое - потому что внутри классов, над которыми перегружаем операторы, есть динамически выделяемая память (все равно нужно отловить момент уничтожения объекта). Второй вариант также не подходит, т.к ...
- 24.12.2016 02:20:28
- Форум: Free Pascal Compiler
- Тема: Вопрос про освобождение памяти при перегрузке операторов
- Ответы: 30
- Просмотры: 32111
Вопрос про освобождение памяти при перегрузке операторов
Здравствуйте. Есть класс TMyClass. Для него перегружен оператор +:
operator +(A:TMyClass;B:Byte)R:TMyClass;
begin
R:=TMyClass.Create;
//что-то делаем...
end
Как освобождать память в выражениях вида C:=((A+2)+3)+4, где A+2 создаст TMyClass, (A+2)+3 создаст еще один класс... Ведь деструкторы ...
operator +(A:TMyClass;B:Byte)R:TMyClass;
begin
R:=TMyClass.Create;
//что-то делаем...
end
Как освобождать память в выражениях вида C:=((A+2)+3)+4, где A+2 создаст TMyClass, (A+2)+3 создаст еще один класс... Ведь деструкторы ...
