开发学院软件开发C++ C++中的虚函数 阅读

C++中的虚函数

 2010-10-15 09:07:57 来源:Web开发网   
核心提示:在window2000下指针在内存中占4个字节,虚函数在一个虚函数表(VTABLE)中保存函数地址,C++中的虚函数(3),在看下面例子,class A {public:virtual void fun0() { cout << "A::fun0" << endl; }vir

在window2000下指针在内存中占4个字节,虚函数在一个虚函数表(VTABLE)中保存函数地址。在看下面例子。

class A {
public:
  virtual void fun0() { cout << "A::fun0" << endl; }
virtual void fun1() { cout << "A::fun1" << endl; }
int a;
int b;
};
int main(int argc, char* argv[])
{
  A a;
  cout << "Size of A = " << sizeof(a) << endl;
    return 0;
}
结果如下:结果如下:

Size of A = 4

虚函数的内存结构如下,你也可以通过函数指针,先找到虚函数表(VTABLE),然后访问每个函数地址来验证这种结构,在国外网站作者是:Zeeshan Amjad写的"ATL on the Hood中有详细介绍"

图二

4.我们再来看看继承中虚函数的内存结构,先看下面的例子class A {
public:
  virtual void f() { }
};
class B {
public:
  virtual void f() { }
};
class C {
public:
  virtual void f() { }
};
class Drive : public A, public B, public C {
};
int main() {
  Drive d;
  cout << "Size is = " << sizeof(d) << endl;
  return 0;
}
结果如下:Size is = 12 ,相信大家一看下面的结构图就会很清楚,

图三

上一页  1 2 3 4 5  下一页

Tags:函数

编辑录入:爽爽 [复制链接] [打 印]
[]
  • 好
  • 好的评价 如果觉得好,就请您
      0%(0)
  • 差
  • 差的评价 如果觉得差,就请您
      0%(0)
赞助商链接