Bonjour,
J'ai une classe contenant un vector, et une méthode d'accès sur ce vector. Comme je veux éviter les accès en écriture sur mon vecteur, et éviter une copie (et éviter un pointeur
), je retourne par référence sur const. Ce qui donne:
const std::vector<MonType>& get(void);
Jusqu'ici tout va bien, la question concerne l'appel de ma méthode get(). Logiquement, je pense à:
const std::vector<MonType>& v = mon_objet.get();
Sauf que si j'omets de mettre const, ça marche également:
std::vector<MonType>& v = mon_objet.get();
Je pense que sans const, il me crée un nouveau vector avec copie, et copie le contenu, alors qu'avec const j'ai bel et bien ma référence et donc un retour sans copie?
Ca me semble évident mais je veux être sûr 
Edit: bon après un nouvel essai, la deuxième version ne marche pas. En fait c'est si on vire le const ET la référence, ou seulement la référence, que ça marche. Ca me semble déjà plus logique. Par contre, oublier la référence peut faire mal puisqu'on n'a aucune erreur de compilation, par contre ça nous coûte une copie.
Partager