Opérateurs de conversion explicite (C++11)

De RAD Studio
Aller à : navigation, rechercher

Remonter à Fonctionnalités C++11 - Index

C++Builder 2009 inclut le support des opérateurs de conversion explicite, une des fonctionnalités du standard C++11.

Vous pouvez maintenant appliquer le spécificateur de fonction explicit dans la définition d'un opérateur de conversion défini par l'utilisateur. Auparavant, les constructeurs explicites (y compris les constructeurs de copie) ont été ajoutés au langage afin d'empêcher les conversions involontaires appelées implicitement par le compilateur. Des opérateurs de conversion explicite ont maintenant été ajoutés afin de fournir le même contrôle sur les appels de conversion involontaire.

Les fonctions de conversion déclarées en tant que travail explicite dans les mêmes contextes que les constructeurs explicites (c'est-à-dire, l'initialisation directe, la conversion de type explicite). Les opérateurs de conversion explicite génèrent des diagnostics de compilation dans les mêmes contextes (copie-initialisation) que les constructeurs explicites.

Par exemple :

class T {
};

class X {
public:
	explicit operator T() const ;
};

void m() {
	X x;

	// avec transtypage
	T tc = (T)x; // ok

	// sans transtypage
	T t = x; // erreur : E2034 Impossible de convertir 'X' en 'T'
}

Voir aussi