C++-Zuweisungsoperator mit gleicher Funktion wie der implizite Delphi-Operator

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Unterstützung für Delphi-Datentypen und Sprachkonzepte


In diesem Abschnitt wird die C++Builder-Syntax für die Verwendung des C++-Zuweisungsoperators mit gleicher Funktion wie der implizite Delphi-Operator beschrieben.

In Delphi wird der implizite Operator sowohl für die Zuweisung als auch für die Erstellung verwendet. In C++ für C++Builder kann operator= nur für Zuweisungen zum Ergebnistyp, aber nicht für die Erstellung des Ergebnistyps verwendet werden.

Mit dieser Syntax können Sie operator= für Zuweisungen in C++ auf dieselbe Weise wie den impliziten Operator in Delphi verwenden.

Ein Beispiel, an dem dies verdeutlicht werden kann, ist die Verwendung von TValue in C++. In Delphi werden dabei mehrere implizite Operatoren verwendet, die die Zuweisung mehrerer Typen transparent ermöglichen.

Delphi:
procedure doSomething();
var
  a : TValue;
begin
  a := 'assigning a string';
  a := 123;
  a := 3.14;
end;

Ohne den Zuweisungsoperator lautet die C++-Entsprechung des obigen Delphi-Codes folgendermaßen.

C++:
void doSomethingCppOld()
{
  TValue a;
  a = TValue::_op_Implicit(UnicodeString(L"assigning a string"));
  a = TValue::_op_Implicit(123);
  a = TValue::_op_Implicit(3.14L);
}

Mit dem Zuweisungsoperator können Sie die C++-Entsprechung wie folgt schreiben.

C++:
void doSomethingCpp()
{
  TValue a;
  a = UnicodeString(L"assigning a string");
  a = 123;
  a = 3.14L;
}
Hinweis: Für die erste und für die zweite C++-Version muss der UnicodeString-Konstruktor bei der Zuweisung eines literalen Strings aufgerufen werden, da er den Typ const wchar_t * (oder const char *, wenn das Präfix L nicht angegeben wird) hat. Andernfalls würde der Zeiger als boolescher Ausdruck ausgewertet werden, weil dies am besten passt, und vermutlich zu einem Aufruf eines unerwarteten impliziten Operators führen.

Siehe auch