我正在浏览c ++代码库,在头文件(Executor.h)中有公共字段定义
typedef std::pair<ExecutionState*,ExecutionState*> StatePair;
在cpp文件(Executor.cpp)中有一行
Executor::StatePair
Executor::fork(ExecutionState ¤t, ref<Expr> condition, bool isInternal) { /* function definition */ }
其中一个成员函数定义
之前引用了该字段在定义之前陈述字段名称的目的是什么?是否存在范围问题?
由于
答案 0 :(得分:1)
StatePair
是类型。它在函数定义之前的目的是声明函数的返回类型
请注意typedef
定义中的StatePair
。它为类型引入了名称别名。在这种情况下,std::pair<ExecutionState*,ExecutionState*>
也将被称为StatePair
,因此您不必编写该长类型名称
函数的返回类型指定从函数返回的值必须属于的类型。例如。在
的情况下int f();
函数f
必须返回一个整数(int
),所以我们可以这样写一个定义:
int f() {return 0;}
函数体中可能还有其他语句,但最后一个语句必须是return
后面带有整数值(在bavode示例中,值为0
)
由于C ++不关心新行(将它们视为常规空格),格式为
int
f() {...}
与上述功能相同。