Partager via


Résultats de les fonctions Appel

Un appel de fonction correspond à un cast sur une valeur r à moins que la fonction a été déclarée comme un type référence.Les fonctions avec le type de retour de référence prennent des valeurs lvalues, et peuvent être utilisées sur le côté gauche d'une instruction d'assignation comme suit :

// expre_Function_Call_Results.cpp
// compile with: /EHsc
#include <iostream>
class Point
{
public:
    // Define "accessor" functions as
    // reference types.
    unsigned& x() { return _x; }
    unsigned& y() { return _y; }
private:
    unsigned _x;
    unsigned _y;
};

using namespace std;
int main()
{
    Point ThePoint;

    ThePoint.x() = 7;           // Use x() as an l-value.
    unsigned y = ThePoint.y();  // Use y() as an r-value.

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

Le code précédent définit une classe appelée Point, qui contient les objets de données privées qui représentent les coordonnées x et y .Ces objets de données doivent être modifiés et leurs valeurs être récupérés.Ce programme est uniquement un plusieurs conceptions pour une telle classe ; l'utilisation d' GetX et SetX ou GetY et des fonctions d' SetY est une autre conception possible.

Fonctionne que classe de retour types, les pointeurs vers la classe types, ou des références aux types de classe peuvent être utilisées comme opérande de gauche aux opérateurs de sélection des membres.Par conséquent, le code suivant est conforme :

// expre_Function_Results2.cpp
class A {
public:
   A() {}
   A(int i) {}
   int SetA( int i ) {
      return (I = i);
   }

   int GetA() {
      return I;
   }

private:
   int I;
};

A func1() {
   A a = 0;
   return a;
}

A* func2() {
   A *a = new A();
   return a;
}

A& func3() {
   A *a = new A();
   A &b = *a;
   return b;
}

int main() {
   int iResult = func1().GetA();
   func2()->SetA( 3 );
   func3().SetA( 7 );
}

Les fonctions peuvent être appelées de façon récursive.Pour plus d'informations sur les déclarations de fonction, consultez spécificateurs de fonction et le fonctions membres.le matériel relatif est dans programme et liaison.

Voir aussi

Référence

Expressions suffixées