c – 如果使用vtable实现具有虚函数的类,那么没有实现虚函数的类如何?

特别是,无论如何都不会有某种功能指针?

解决方法

非虚拟成员函数实际上只是一个语法糖,因为它们几乎像普通函数,但具有访问检查和隐式对象参数.
struct A 
{
  void foo ();
  void bar () const;
};

基本相同:

struct A 
{
};

void foo (A * this);
void bar (A const * this);

需要vtable,以便为特定的对象实例调用正确的函数.例如,如果我们有:

struct A 
{
  virtual void foo ();
};

‘foo’的实现可能近似于:

void foo (A * this) {
  void (*realFoo)(A *) = lookupVtable (this->vtable,"foo");
  (realFoo)(this);   // Make the call to the most derived version of 'foo'
}

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...