C++-Zuweisungsoperator mit gleicher Funktion wie der implizite Delphi-Operator
Nach oben zu Unterstützung für Object Pascal-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äfixLnicht 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.