explicit

De RAD Studio
Aller à : navigation, rechercher

Remonter à Liste alphabétique des mots clés - Index


Catégorie

Mots clés spécifiques C++

Syntaxe

explicit <single-parameter constructor declaration>

Description

Normalement, on peut affecter à une classe avec un seul constructeur de paramètre une valeur correspondant au type du constructeur. Cette valeur est automatiquement (implicitement) convertie en un objet du type de la classe à laquelle il est affecté. Vous pouvez empêcher cette sorte de conversion implicite en déclarant le constructeur de la classe avec le mot clé explicit Tous les objets de cette classe doivent alors se voir affecter des valeurs du type de la classe ; toute autre affectation provoque une erreur de compilation.

On peut affecter aux objets de la classe suivante des valeurs correspondant au type du constructeur du type de la classe :

class X {
public:
X(int);
X(const char*, int = 0);
};

Les instructions d'affectation suivantes sont alors correctes.

void f(X arg) {
X a = 1;
X B = "Jessie";
a = 2;
}

Toutefois, on ne peut affecter aux objets de la classe suivante que des valeurs correspondant au type de la classe :

class X {
public:
explicit X(int);
explicit X(const char*, int = 0);
};

Les constructeurs explicit nécessitent alors que les valeurs des instructions d'affectation suivantes soient converties dans le type de la classe à laquelle elles sont affectées.

void f(X arg) {
X a = X(1);
X b = X("Jessie",0);
a = X(2);
}

Voir aussi