• [^] # Re: Godbolt

    Posté par . En réponse au journal Le quiz c++ de l'été. Évalué à 2.

    C'est pour ça que depuis C++11 (depuis qu'on a la sémantique de déplacement), il est conseillé de passer ce genre de paramètre par valeur, et plus par référence.

    Ce point n'est pas aussi clair. Prends l'exemple suivant :

    void A::set_b(B b) {
     if(b == this->b) {
     return;
     }
     this->b = b;
    }
    

    et ailleurs dans le code :

    B some_b = ...;
    A* a = ...;
    a->set_b(some_b);
    

    si la variable some_b est égal à a::b, qui est un cas pas délirant du tout dans un contexte classique d'exécution de code, alors tu as une copie de B qui a lieu alors qu'elle n'aurait pas eu si B était passé en référence constante.