Подтвердить что ты не робот

Почему в Delphi нет перегрузок операторов для классов?

Я всегда задумывался об этом немного, но почему перегрузка операторов недоступна для классов в Delphi?

Я помню, как однажды читал ответ, и он сказал, что это будет в чем-то противоречить, но я не могу много помнить. Насколько я могу судить, только неявный оператор может вызвать некоторые проблемы, поскольку классы хранятся в куче, а назначение - это, фактически, копия адреса кучи (в основном копирующие указатели).

4b9b3361

Ответ 1

Закрыть. Это потому, что объекты являются ссылочными типами, а память управляется вручную. Поэтому, если вы сказали myResult := myObject1 + myObject2 + myObject3;, вам нужно будет создать промежуточный объект где-то там, и там нет кода для его освобождения, поэтому вы получите утечки памяти.