首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于c++中虚函数机制?该如何解决

2012-09-05 
关于c++中虚函数机制?书上说虚函数是通过虚表来实现的,在继承中,子类重写的虚函数会覆盖子类虚表中父类虚

关于c++中虚函数机制?
书上说虚函数是通过虚表来实现的,在继承中,子类重写的虚函数会覆盖子类虚表中父类虚函数的地址,我有一个问题,如果父类虚函数地址被覆盖了,那么我在子类虚函数中显示调用父类的该虚函数,那么编译器如何知道父类虚函数的地址呢?还是说子类本身还在其他地方存放父类虚函数的信息?
 例如: 
  class A
 {
  public:
  virtual void fun()
  {

  }
  };

  class B:public A
 {
  public:
  virtual void fun()
  {
  A::fun();
  }
 };
  此时B是如何定位A中fun()的地址呢?

[解决办法]
虚函数机制是针对在类指针和类引用的,你这个A::fun();并没有使用虚函数机制,他和普通调用一样的。
[解决办法]
编译后直接把A::fun();的地址写死了,调用时直接调用 0x********这个地址就好了

热点排行