抽象虚拟函数的vtable中有多少个条目?

smi*_*453 0 c++ abstract-class vtable vptr

我读到一个抽象类仍然可以有一个表.但我对它在vtable中会有多少条目感到困惑.例如,如果我的抽象类是:

class Circle(){
    virtual void draw() = 0;
}
Run Code Online (Sandbox Code Playgroud)

然后在其vtable中有多少条目?另外,我是否正确地说这个抽象类在其vtable中有1个条目?谢谢你的帮助.

class Circle(){
    virtual double a{ return 0.0; }
    virtual void draw() = 0;
}
Run Code Online (Sandbox Code Playgroud)

Pet*_*ker 6

每个虚函数都可以被覆盖.编译器必须构建一些机制来动态调度对每个虚函数的调用,以便代码调用正确的覆盖版本,这取决于对象的实际类型.该机制通常是一个vtable,每个虚函数必须有一个条目.所以第一个例子有一个条目,第二个例子有两个条目.请注意,将函数标记为纯虚拟不会影响这一点; 它仍然需要动态调度.