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