奇怪的类似函数调用的语法
Weird function call like syntax
我在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();
}
不幸的是,到目前为止,我还没能用grep找到p()
的定义。当我找到定义时,我会更新这篇文章(手动跟踪标题可能需要一段时间)。
直接判断有点困难。但我认为smt2::parser
是一个类或结构类型的名称。线路
stm2::parser p(ctx,is,interactive);
调用该类/结构的构造函数。stm2::parser
定义的类可能重载了()
运算符。我找到了一个教程,里面有关于函数调用运算符重载的更多信息。
在OP中提供的代码中,p
是smt2::parser
类型的对象。它调用一个接受三个参数的构造函数。p()
调用重载运算符(可能是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;
}
相关文章:
- 函数调用中参数的顺序重要吗
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 变量没有改变?通过向量的函数调用
- 在两个类中共享相同的函数调用,并在不需要时避免空实例化
- 是否有C++编译器选项允许激进地删除所有函数调用,并将参数传递给具有空体的函数
- 我知道函数调用中存在歧义.有没有办法调用foo()函数
- 模板函数调用
- 获取从C++中同一类中的构造函数调用的方法返回的值
- 使用基类指针调用基类的值构造函数的语法是什么?
- 需要"模板<>"语法 --> 通过函数调用类模板
- 压缩C++函数调用语法
- P/调用语法 - 我是否在 C# 中正确翻译了我的C++函数
- 在构造函数成员初始化之前调用成员函数的语法
- 奇怪的类似函数调用的语法
- 如何用C++兼容的语法转换C函数调用
- 显式复制构造函数调用语法
- 统一的调用语法和函数指针
- 线程函数未被调用.语法有什么问题吗
- 函数调用语法
- 奇怪的c++语法:函数调用之前的类型定义