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 :
- 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 ) ?
- 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!
Vous en pensez quoi ?
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; };
Partager