虚函数的研究

     我们知道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函数里的三个函数执行语句,在编译好之后就变成了代码区的偏移地址,而且这个偏移地址能够在编译的时候唯一确定。虽然在这个例子中用到了类和对象,但实际上执行的时候和执行一个普通函数没区别。


         
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值