虚函数的研究

来源:互联网 发布:域名和空间多少钱 编辑:程序博客网 时间:2024/06/04 18:04

     我们知道C++程序编译好以后大致分为:代码区、数据区,比如说类的函数体就被放在代码区,每一个类的实例则被放在数据区。


假设有下面的类的结构:
  1. #include <stdio.h>
  2. class Base {
  3. public:
  4.     void foo() {
  5.         printf("Base::foo()./n");
  6.     }
  7. };
  8. class Derive : Base {
  9. public:
  10.     void bar() {
  11.         printf("Derive::bar()./n");
  12.     }
  13. };
  14. int main()
  15. {
  16.     Base b;
  17.     b.foo();
  18.     Derive d1;
  19.     d1.foo();
  20.     d1.bar();
  21.     return 0;
  22. }


当编译器在编译的时候,将以上类的函数代码放在代码区,main函数里的三个函数执行语句,在编译好之后就变成了代码区的偏移地址,而且这个偏移地址能够在编译的时候唯一确定。虽然在这个例子中用到了类和对象,但实际上执行的时候和执行一个普通函数没区别。


         
        
原创粉丝点击