在下面的代码中,它通过指向派生对象的指针调用虚函数foo.这个电话会通过vtable还是B::foo直接打电话?
如果它是通过vtable进行的,那么B::foo直接调用它的C++惯用方法是什么?我知道在这种情况下我总是指着一个B.
Class A
{
public:
virtual void foo() {}
};
class B : public A
{
public:
virtual void foo() {}
};
int main()
{
B* b = new B();
b->foo();
}
Run Code Online (Sandbox Code Playgroud) 我正在编写一个使用外部第三方C库的C++库.因此,我的图书馆将调用此第三方库中的函数,第三方库将回调到我的库的不同部分.
我想知道在这种情况下异常会发生什么?假设MyLib :: foo()调用外部C库函数,最终调用MyLib :: bar(),并且bar抛出异常,会发生什么?将异常正确传播到foo()中的处理程序吗?
谢谢!