Wyniki wywołania funkcji
Wywołanie funkcji wynikiem jest wartość, chyba że funkcja jest zadeklarowany jako typ odwołania.Funkcje z typem zwracanym odniesienia oceny do wartości l i mogą być używane po lewej stronie instrukcji przypisania w następujący sposób:
// 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";
}
Powyższy kod definiuje klasę o nazwie Point, który zawiera dane prywatne obiekty reprezentujące x i y współrzędnych.Obiekty te dane muszą być modyfikowane i pobierane ich wartości.Ten program jest tylko jeden z kilku projektów dla klasy; Korzystanie z GetX i SetX lub GetY i SetY funkcji jest inny projekt możliwe.
Funkcje tego typu klasy zwrotu, wskaźniki do typu klasy lub odwołania do typu klasy może służyć jako lewy operand podmiotom gospodarczym wybór elementów członkowskich.W związku z tym poniższy kod jest prawnych:
// 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 );
}
Funkcje mogą być wywoływane rekursywnie.Aby uzyskać więcej informacji dotyczących deklaracji funkcji, zobacz Specyfikatory funkcji i Funkcji elementów członkowskich.Pokrewne materiał jest w programu i powiązania.