Partager via


Retours de fonction de type référence

Les fonctions peuvent être déclarées pour retourner un type référence.Il existe deux raisons d'effectuer une déclaration :

  • Les informations qui sont retournées sont assez un objet volumineux que retourner une référence est plus efficace que retourne une copie.

  • Le type de la fonction doit être une l-value.

Comme il peut être plus efficace de passer des grands objets aux fonctions par référence, il peut également être plus efficace de retourner des grands objets des fonctions par référence.le fournisseur de Référence-retour élimine le besoin de copier l'objet à un emplacement temporaire avant de retourner.

les types de Référence-retour peuvent également être utiles lorsque la fonction doit prendre une l-value.La plupart des opérateurs surchargés appartiennent à cette catégorie, notamment l'opérateur d'assignation.Les opérateurs surchargés sont couvertes dans opérateurs surchargés.

Exemple

Prenons l'exemple d' Point :

// refType_function_returns.cpp
// compile with: /EHsc

#include <iostream>
using namespace std;

class Point
{
public:
// Define "accessor" functions as
//  reference types.
unsigned& x();
unsigned& y();
private:
unsigned obj_x;
unsigned obj_y;
};

unsigned& Point :: x()
{
return obj_x;
}
unsigned& Point :: y()
{
return obj_y;
}

int main()
{
Point ThePoint;
// Use x() and y() as l-values.
ThePoint.x() = 7;
ThePoint.y() = 9;

// Use x() and y() as r-values.
cout << "x = " << ThePoint.x() << "\n"
<< "y = " << ThePoint.y() << "\n";
}

Sortie

x = 7
y = 9

Notez que les fonctions x et y sont déclarées comme retournant des types référence.Ces fonctions peuvent être utilisées de chaque côté d'une instruction d'assignation.

Les déclarations des types référence doivent contenir des initialiseurs sauf dans les cas suivants :

  • déclaration explicite d' extern

  • déclaration d'un membre de classe

  • déclaration dans une classe

  • Déclaration d'un argument à une fonction ou le type de retour d'une fonction

Voir aussi

Référence

Références (C++)