Un problème pour la const de référence de retour, si l'utilisateur codé quelque chose comme:
const std::string & str = myObject.getSomeString() ;
Avec un std::string
retour, l'objet temporaire permettrait de rester en vie et se joint à la str jusqu'str est hors de portée.
Mais ce qui se passe avec un const std::string &
? Ma conjecture est que nous aurions un const référence à un objet qui pourrait mourir lorsque son objet parent libère:
MyObject * myObject = new MyObject("My String") ;
const std::string & str = myObject->getSomeString() ;
delete myObject ;
// Use str... which references a destroyed object.
Donc ma préférence va à la const référence de retour (parce que, de toute façon, je suis plus à l'aise avec l'envoi d'une référence en espérant que le compilateur d'optimiser le supplément temporaire), tant que le contrat est respecté: "si vous le voulez, au-delà de mon objet de l'existence, ils le copier avant de mon objet de destruction"