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

前端之家收集整理的这篇文章主要介绍了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&C++相关文章