Constructeurs par copie : laisser le compilo gérer ?
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 ! :oops:
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!
Code:
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 ? ;)