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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 ?