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

+0 -0

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.

1
2
3
4
int main ()
{
    DoBar(Foo(42));
}
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