1

私はc++コードベースを調べており、ヘッダーファイル(Executor.h)にパブリックフィールド定義があります

typedef std::pair<ExecutionState*,ExecutionState*> StatePair;

cppファイル(Executor.cpp)内に行があります

Executor::StatePair 
Executor::fork(ExecutionState &current, ref<Expr> condition, bool isInternal) { /* function definition */ }

このフィールドは、メンバー関数定義の1つの直前で参照されます。

定義の直前にフィールド名を記載する目的は何ですか?スコーピングの問題ですか?

ありがとう

4

1 に答える 1

1

タイプStatePairです。関数定義の前にあるその目的は、関数の戻り型を記述することです。

typedefの定義に注意してくださいStatePair。タイプの名前エイリアスを導入します。この場合std::pair<ExecutionState*,ExecutionState*>も呼ばれるStatePairので、その長い型の名前を書く必要はありません

関数の戻り型は、関数から返される値が属していなければならない型を指定します。例:

int f();

関数fは整数(int)を返す必要があるため、次のような定義を記述できます。

int f() {return 0;}

関数本体に他のステートメントが存在する可能性がありますが、最後のステートメントは、returnその後に整数値を持つaである必要があります(バボードの例では、値は0

C ++は新しい行を気にしないため(通常の空白として扱います)、形式は

int
f() {...}

上記の機能と同じです。

于 2012-06-11T11:26:26.247 に答える