explicit
Le problème exposé dans ce sujet a été résolu.
Bonjour,
En lisant un code, je suis tombé sur le mot-clef explicit
. J'ai cherché sur Internet, et j'ai cru comprendre qu'il servait à dire au compilateur de ne pas effectuer d'optimisations sur ce code.
Mais je ne comprends pas dans quels cas c'est recherché, et pourquoi.
Merci, et bonne journée
91
Pas vraiment. En fait, il dit au compilateur de ne pas faire de conversion implicite pour résoudre un appel de fonction. Exemple typique tiré de SO.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 | class Foo
{
public:
// single parameter constructor, can be used as an implicit conversion
Foo (int foo) : m_foo (foo)
{
}
int GetFoo () { return m_foo; }
private:
int m_foo;
};
void DoBar(Foo foo)
{
int i = foo.GetFoo();
}
int main ()
{
DoBar(42);
}
|
Avec explicit
, tu interdis cette conversion et ça t'oblige à écrire quelque chose comme ceci.
| int main ()
{
DoBar(Foo(42));
}
|
D'accord, merci beaucoup.
Pour compléter la réponse donnée ci-dessus, un peu de lecture sur les casts automatiques.
Connectez-vous pour pouvoir poster un message.
Connexion
Pas encore membre ?
Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte