explicit

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

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

Édité par 91

+0 -0
Staff

Cette réponse a aidé l'auteur du sujet

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));
}
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

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