@ac_wingless je trouve ton message fort int�ressant:
il faut bien comprendre qu'une r�f�rence sur constante pr�sente quelques minuscules avantages cosm�tiques ou situationnels
Pour moi des qu'un param�tre de ma fonction n'est plus de type simple je le passe en r�f�rence const, pour �vit� une recopie.
int fonction(int typSimple, const std::string& typeNonSimple)
pas de constructeur de copie
J'ai construit cette exemple qui fonctionne, j'ai rat� un truc ?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| #include <iostream>
#include <vector>
class A
{
public:
const int & Value;
A(int v) : value_(v), Value( value_ )
{
}
private:
int value_;
friend std::ostream& operator<<(std::ostream& o, const A& a) { o << a.value_ ; return o ; }
};
int main()
{
A a(123);
A aa(a);
std::cout << aa << std::endl ;
} |
interdiction de d�placer l'instance en m�moire
Genre faire un memcpy sur une instance? Perso je fais jamais cela.
incompatibilit� avec pratiquement toute la STL
Oui en effet sans bien comprendre pourquoi cela ne fonctionne pas
1 2 3
| A a(123);
std::vector<A> v ;
v.push_back(a); |
'operator =' function is unavailable in 'A'
Bon on peut s'en sortir avec des pointeurs et des references...
1 2 3 4
| A a(123);
std::vector<A*> v ;
v.push_back(&a);
std::cout << *(v[0]) << std::endl ; |
Pour finir en revenant sur la question pos�e je pense que l'utilisation des accesseurs est moins d�routante, penser au suivant d�veloppeur qui va reprendre le code. Mais elle est loin d��tre b�te!
Partager