Question

dire que j'ai une classe:

class A
{
 public:
 A() {}
};

et une fonction:

void x(const A & s) {}

et je fais:

x(A());

Quelqu'un pourrait-il s'il vous plaît me expliquer les règles en ce qui concerne le passage des objets temporaires par référence? En termes de ce que le compilateur permet, où vous avez besoin const, si une copie implicite se produit, etc. De jouer autour, il semble que vous avez besoin de const ce qui est logique, mais est-il une règle formelle au sujet de tout cela?

Merci!

Était-ce utile?

La solution

Il y a une règle formelle - la norme C ++ (section 13.3.3.1.4 si vous êtes intéressé) déclare qu'un temporaire ne peut être lié à une référence const - si vous essayez d'utiliser une référence non-const le compilateur doit drapeau comme une erreur.

Autres conseils

Herb Sutter fait un excellent travail en expliquant ici: http://www.gotw.ca /gotw/081.htm

x () doit prendre soit une référence à un const A temporaire, ou x () doivent prendre un A par valeur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top