Constructeur par copie et opérateurs d'affectations : comment éviter de dupliquer le code ?
Bonjour à tous :)
J'ai besoin de créer un constructeur par copie dans une classe personnelle, et deux opérateurs d'affectations (un avec une R-Value), mais j'ai dû dupliquer le code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
Operation::Operation(const Operation &valueToCopy){
this->_operator = valueToCopy._operator;
this->_tile_1 = valueToCopy._tile_1;
this->_tile_2 = valueToCopy._tile_2;
}
Operation& Operation::operator=(Operation&& valueToCopy){
this->_operator = valueToCopy._operator;
this->_tile_1 = valueToCopy._tile_1;
this->_tile_2 = valueToCopy._tile_2;
return *this;
}
Operation& Operation::operator=(const Operation& valueToCopy){
this->_operator = valueToCopy._operator;
this->_tile_1 = valueToCopy._tile_1;
this->_tile_2 = valueToCopy._tile_2;
return *this;
} |
(Si vous vous demandez pourquoi les 3, c'est simplement pour mieux utiliser la STL, elles paraissent indispensables pour utiliser les méthodes de certaines collections).
Comment faire plus simple, factoriser tout cela en réutilisant l'une des 3 méthodes dans les deux autres ? J'avais vu dans un cours, mais j'ai carrément oublié.
Autre question liée : vu que je n'utilise pas de pointeur nu dans ma classe, je n'ai pas besoin de surcharger le destructeur : n'est-ce pas ?