Assignation implicite : besoin d'explication
Bonjour,
j'ai fait une classe générique Number<T> pour avoir mes propres objets Double, Float, Integer, etc :
Code:
1 2 3 4 5 6 7 8 9 10 11
|
template<typename T>
class Number<T>
{
private:
T _real;
public:
Number(T const&);
Number(Number<T>const&);
Number<T>& operator=(Number<T>const&);
}; |
L'attribut _real permet de stocker la valeur du nombre. J'ai une question à propose de ce bout de code :
Code:
1 2 3
|
Number<double> a = 1.0;
a = 2.0; |
A la première ligne, il y a un appel implicite au premier constructeur de ma classe : je n'ai pas de problème avec ça. Par contre, je ne comprends pas pourquoi la seconde ligne fonctionne. Elle est importante car elle me permet ensuite de surcharger les opérateurs "+,-,*,/" de manière efficace (je suis aussi rapide que les opérations classiques en exploitant le tag -O3 de g++).
Voilà, si quelqu'un pourrait m'éclairer sur ce point et me dire si ce comportement est dans la norme ou si c'est propre à g++.
Merci