Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ein Funktionsaufruf ergibt einen R-Wert aus, es sei denn, die Funktion als Referenztyp deklariert ist.Funktionen mit Werten zu den Rückgabetyp der Verweise aus, und L-Werten können auf der linken Seite einer Zuweisungsanweisung verwendet werden, wie folgt:
// 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";
}
Dieser Code definiert eine Klasse, die Pointaufgerufen wird, die Objekte des privaten Daten enthält, die x- und y-Koordinaten darstellen.Diese Datenobjekte müssen geändert werden, und deren Werte abgerufen werden.Dieses Programm ist nur eine von mehreren Entwürfen für eine solche Klasse. Verwendung GetX und des SetX oder des GetY und der SetY-Funktionen ist ein anderer möglicher Entwurf.
Funktionen, die klassentypen, Zeiger auf den Klassentypen oder Verweise auf Klassentypen als der linke Operand Member Auswahl Operatoren verwendet werden können.Daher ist der folgende Code gültig:
// 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 );
}
Funktionen können rekursiv aufgerufen werden.Weitere Informationen über Funktionsdeklarationen finden Sie unter Funktions-Spezifizierer und Memberfunktion.Verwandtes Material ist in Programmieren und Bindung.