Opérateur d'assignation C++ en tant qu'opérateur implicite Delphi
Remonter à Gestion des types de données et des concepts du langage Delphi
Cette section décrit la syntaxe C++Builder pour l'utilisation de l'opérateur d'assignation C++ en tant qu'opérateur implicite Delphi.
En Delphi, l'opérateur implicite est utilisé à la fois pour l'assignation et la construction. En C++ pour C++Builder, il est possible d'utiliser operator=
uniquement pour l'assignation du type de résultat (et non pas pour la construction du type de résultat).
Cette syntaxe autorise l'utilisation de operator=
pour l'assignation C++, exactement comme l'opérateur implicite utilisé en Delphi.
Ceci est particulièrement vrai, par exemple, lors de l'utilisation de TValue en C++ : plusieurs opérateurs implicites en Delphi permettent aux utilisateurs d'assigner plusieurs types de façon transparente.
procedure doSomething();
var
a : TValue;
begin
a := 'assigning a string';
a := 123;
a := 3.14;
end;
Sans l'opérateur d'assignation, l'équivalent C++ du code Delphi ci-dessus est le suivant.
void doSomethingCppOld()
{
TValue a;
a = TValue::_op_Implicit(UnicodeString(L"assigning a string"));
a = TValue::_op_Implicit(123);
a = TValue::_op_Implicit(3.14L);
}
Avec l'opérateur d'assignation, il est possible d'écrire l'équivalent C++ suivant.
void doSomethingCpp()
{
TValue a;
a = UnicodeString(L"assigning a string");
a = 123;
a = 3.14L;
}
- Remarque : Que vous utilisiez la première version ou la seconde version C++, il est important d'appeler le constructeur
UnicodeString
lors de l'assignation d'une chaîne littérale, puisque son type estconst wchar_t *
(ouconst char *
en l'absence de préfixeL
spécifié explicitement). Autrement, le pointeur serait évalué en tant qu'expression booléenne, car il s'agit du cas le plus pertinent résultant probablement d'un appel d'opérateur implicite inattendu.