我在 C ++ 文件中遇到过这个顶级函数。 所以我的问题是:
smt2::parser
类型声明到底在做什么? p(ctx, is, interactive);
的常规通话有什么不同? 以下是代码:
bool parse_smt2_commands(cmd_context & ctx, std::istream & is, bool interactive) {
smt2::parser p(ctx, is, interactive);
return p();
}
不幸的是,到目前为止,我还没能找到p()
与grep的定义。当我找到定义时,我会更新帖子(跟踪标题包括手动可能需要一段时间)。
答案 0 :(得分:6)
直接说出来有点困难。但我想象的是smt2::parser
是类或结构类型的名称。这条线
stm2::parser p(ctx,is,interactive);
调用该类/ struct的构造函数。 stm2::parser
定义的类可能会重载()
运算符。我找到了a tutorial,其中包含有关函数调用的运算符重载的更多信息。
答案 1 :(得分:3)
在OP中提供的代码中,p
是smt2::parser
类型的对象。它调用一个带三个参数的构造函数。 p()
调用一个返回bool的重载运算符(可能是operator()()
)。
以下是一个例子:
class Test {
public:
Test(int i, char j, bool k) {
}
~Test() { }
bool operator()() const {
return true;
}
};
在这种情况下,我们只是简单地调用操作员来演示正在发生的事情。
int main() {
std::cout << Test(1, 'a', true)(); // 1
return 0;
}