Оглавление
Перегрузка операторов
Оглавление

Перегрузка операторов

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

Унарные операторы

opopfunc
- opNeg
~ opCom

Операторы сравнения

opopfunc
== opEquals
!= opEquals
< opCmp
<= opCmp
> opCmp
>= opCmp

Выражение a == b будет переписано как a.opEquals(b) и b.opEquals(a). != рассматривается аналогично. Метод OpEquals должен быть реализован на возвращение bool.

Операторы присваивания

opopfunc
= opAssign
+= opAddAssign
-= opSubAssign
*= opMulAssign
/= opDivAssign
%= opModAssign
&= opAndAssign
|= opOrAssign
^= opXorAssign
<<= opShlAssign
>>= opShrAssign
>>>= opUShrAssign

Выражение a op b переписывается как a.opfunc(b). Оператор присваивания может осуществляется следующим образом:

obj@ opAssign(const obj &in other)
{
  // Осуществляем присвоение
  ...
  // Возвращяем хендл на себя
  return this;
}

По умолчанию оператор присваивания скриптового класса делает побитовую копию содержания класса, так что если вас это устраивает, то нет необходимости для написания своей реализации этого метода.

Бинарные операторы

opopfuncopfunc_r
+ opAdd opAdd_r
- opSub opSub_r
* opMul opMul_r
/ opDiv opDiv_r
% opMod opMod_r
& opAnd opAnd_r
| opOr opOr_r
^ opXor opXor_r
<< opShl opShl_r
>> opShr opShr_r
>>> opUShr opUShr_r

Перевод - arroy.one@gmail.com. При копировании материалов указывайте ссылку на источник.