Bonjour à tous,

Après relecture de Effective C++ (histoire de passer le temps dans le train), Scott Meyers mets le doigt sur un point assez délicat : le constructeur par copie généré par le compilo effectue une copie de tous les membres de la classe. Donc en cas d'évolution ultérieure, il n'y a pas besoin de modifier quoique ce soit, le compilo se chargera des membres supplémentaires. Alors que nous, humbles programmeurs, on pourrait oublier de le modifier, ce constructeurs par copie !
J'avoue que cette "facilité" est assez sympathique, et m'amène donc aux questions suivantes :
  1. Peut-on laisser le compilo générer le constructeur par copie et ne s'occuper que de l'opérateur d'affectation (avec copy and swap ) ?
  2. Dans quels cas il faut absolument le faire à la main ?



Typiquement, pour ce genre de code, j'aurai envie de laisser le compilo gérer. A part certains cas particuliers (variables non copiables genre mutex, etc.), je pense pas que ça pose problème!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
class Widget
{
public:
    virtual void Draw() const = 0;
    // Other functions
 
private:
    boost::shared_ptr<Shape> m_shape_ptr;
    int m_id;
    std::vector<std::string>    m_elements_name;
};
Vous en pensez quoi ?