C++-Zuweisungsoperator mit gleicher Funktion wie der implizite Delphi-Operator
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.
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.
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.
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 Typconst wchar_t *
(oderconst char *
, wenn das PräfixL
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.