All Delphi operator declarations have the signature of functions with parameters and a return type. In C++ however, some operators don't return a value, but operate on the class instance itself.

  • The binary operators in C++ are formed like their counterparts in C++ and therefore the translation is straightforward.
  • The code for the unary operators Negative, Positive, LogicalNot, Inc and Dec has to be remodeled at the C++ translation.
  • The conversion operators have to be remodeled too. Dependant on the direction of the conversion - to the class or from the class - the translation has to be done differently.
  • Finally there are more operators in Delphi like Trunc or In which aren't operators in C++.

Here is a simple example for the translation of a binary operator:


class operator TMyClass.Add(a, b: TMyClass): TMyClass;
var
  returnrec : TMyrClass;
begin
  returnrec.payload := a.payload + b.payload;
  Result:= returnrec;
end;

becomes in C++ to:


TMyClass operator + (const TMyClass& A, const TMyClass& B)
{
  TMyClass result = {0};
  TMyClass returnrec = {0};
  returnrec.payload = A.payload + B.payload;
  result = returnrec;
  return result;
}






   deutsch Deutsch

 
Latest News
11/15/19
DelphiXE2Cpp11 nifty class references offer [more...]

10/16/19
Delphi2C# beta offer [more...]