标签: function-invocation

C++动态调度机制及调用正确函数的过程

我了解 vptr 和 vtable 的概念以及它们在实现此机制中的作用。

编译器使用至少一个虚函数为每个类构造一个 vtable 并为每个类实例添加一个 vptr 指针,以便它可以访问 vtable 并在运行时执行正确的函数,但我无法理解具体如何。

考虑以下代码:

struct A
{
  virtual void foo() { cout << "A::foo" << endl; }
  virtual void goo() { cout << "A::goo" << endl; }
};

struct B
{
  virtual void goo() { cout << "B::goo" << endl; }
  virtual void foo() { cout << "B::foo" << endl; }
};

int main()
{
  A *r = (A *)(new B());
  r->foo();
}
Run Code Online (Sandbox Code Playgroud)

输出:

B::goo

你能解释一下 B::goo 是如何以及为什么被执行的吗?编译器是否在编译时确定了要在 vtable 中查找的位置?谢谢。

编辑: …

c++ dynamic-dispatch function-invocation

2
推荐指数
1
解决办法
59
查看次数

从 Java JDK 函数调用 TypeScript

我看到Calling a groovy script from a java function using javax.script我猜想使用 runWithGroovyClassLoader 可以获取一个 java 类、java 对象并使用参数调用其方法。尽管在示例中它是一个无参数的示例。

我提供了一个能够调用类型脚本的解决方案。所以我的用户在前端输入类型脚本。在后端,我们从 Java 函数中调用脚本,从 Java 向其传递当前 txn 的一些状态(参数),然后类型脚本返回一个映射/对象以调用 java 函数

java typescript function-invocation

1
推荐指数
1
解决办法
2779
查看次数