以下摘录的含义是什么:
: program_(program), max_iters_(max_iterations), num_iters_(0)
在这段代码中:
Search::Search(const string& program, int max_iterations)
: program_(program), max_iters_(max_iterations), num_iters_(0)
{
max_branch_ = 0;
// ...
}
您所指的称为初始化列表。类或结构可以在其构造函数中使用此列表初始化成员变量。
例子:
struct foo
{
foo() : member_(0) {}
private:
int member_;
};
如果您有没有默认构造函数的成员,则初始化列表尤其重要 - 因为当您到达构造函数的主体时,每个成员都将被创建。如果您没有为该成员选择合适的构造函数,编译将失败。
例子:
struct bar { bar(int) {} };
struct foo
{
foo()
: bar_(0) // does not compile without this line
// because the compiler will try to default
// construct otherwise
{}
private:
bar bar_;
};
那是一个构造函数初始化列表。PresumableSearch
是一个具有数据成员program_
和的max_iters
类num_iters
。
首先,它不是函数声明,而是类构造函数实现
Search 类在具有 2 个参数的 ctor 之前声明,现在您位于其实现的前面,其中参数用于初始化数据成员。