12.3.2. Арифметические объекты-функции

12.3.2. Арифметические объекты-функции

Предопределенные арифметические объекты-функции поддерживают операции сложения, вычитания, умножения, деления, взятия остатка и вычисления противоположного по знаку значения. Вызываемый оператор – это экземпляр, ассоциированный с типом Type. Если тип является классом, предоставляющим перегруженную реализацию оператора, то именно эта реализация и вызывается.

plusstring stringAdd;

// вызывается string::operator+()

sres = stringAdd( sval1, sval2 );

Сложение:

plusType

*

dres = BinaryFunc( plusdouble(), dval1, dval2 );

minusint intSub;

ires = intSub( ival1, ival2 );

Вычитание:

minusType

*

dres = BinaryFunc( minusdouble(), dval1, dval2 );

multipliescomplex complexMultiplies;

cres = complexMultiplies( cval1, cval2 );

Умножение:

multipliesType

*

dres = BinaryFunc( multipliesdouble(), dval1, dval2 );dividesint intDivides;

ires = intDivides( ival1, ival2 );

Деление:

dividesType

dres = BinaryFunc( dividesdouble(), dval1, dval2 );

Взятие остатка:

modulusType

*

modulusInt IntModulus;

Ires = IntModulus( Ival1, Ival2 );

ires = BinaryFunc( modulusint(), ival1, ival2 );

negateint intNegate;

ires = intNegate( ires );

Вычисление противоположного значения:

negateType

*