関数呼び出しの結果
関数呼び出しは右辺値に関数が参照型として宣言すると評価されます。参照の戻り値の型で関数は左辺値は次のように評価され代入ステートメントの左側に使用できる :
// 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";
}
このコードは Point という x 座標と y 座標を表すプライベート データ オブジェクトを含むクラスを定義します。これらのデータ オブジェクトを変更する必要があり取得された値。このプログラムではこのようなクラスでは複数のデザインの 1 つだけです。; GetX の使用はSetX または GetY と SetY 関数のもう一つのデザイン可能です。
クラス型へのポインタークラス型クラス型への参照がメンバー選択演算子の左側のオペランドとして使用できる関数。したがって次のコードがあります :
// 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 );
}
関数は再帰的に呼び出すことができます。関数宣言の詳細については関数の指定子 と メンバー関数 を参照してください。関連資料は プログラムとリンク にあります。