Anzeigen: Object Pascal C++
Anzeigeeinstellungen

C++-Zuweisungsoperator mit gleicher Funktion wie der implizite Object Pascal-Operator

Aus Appmethod Topics
Wechseln zu: Navigation, Suche

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


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

In Object Pascal wird der implizite Operator sowohl für die Zuweisung als auch für die Erstellung verwendet. In C++ für Appmethod C++ 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 Object Pascal verwenden.

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

Object Pascal:
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 Object Pascal-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

Meine Werkzeuge
In anderen Sprachen