晚捆绑的实现过程

原创 2004年02月22日 23:12:00

一、函数调用捆绑

1定义

  捆绑:把函数体与函数调用相联系称为捆绑。当捆绑在程序运行之前(由编译器和连接器)完成时,称为早捆绑。(C编译只有一种函数调用,就是早捆绑)如果捆绑发生在运行时,则称为晚捆绑(或动态捆绑、运行时捆绑。

  虚函数:如果我们在定义基类时在函数前加关键字virtual,则会告诉编译器对于此函数要进行晚捆绑,同时自动安装晚捆绑实现机制。

2实现

编译器对每个包含虚函数的类创建一个表(称为VTABLE)。在此表中放入特定类的虚函数地址,此外此类中还持有一VPTR指针,指向这个对象的VTABLE。通过基类指针做函数调用时(编译器静态地将子对象的VPTR,这样就能调用正确的函数使晚捆绑实现。

 

#include <typeinfo.h>
#include <iostream.h>

class base {
  public:
      virtual void f() {
          cout << "base-print" << endl;
};

class derived : public base {
 public:
  void f() {
    cout << "derived-print" << endl;
 }
};

void main() {
 base* b;     //(1)
 derived* d = new derived; //(2)

 b = d;        //(3)
 b.f();         //(4)
}

结果:derived-print

 

 

 

 

 

图如下所示:

 

 

 

 


 

 

  

 

c++晚捆绑的实现机制

早绑定(early binding)是指在实例化对象之前定义它的属性和方法,这样编译器或解释程序就能够提前转换机器代码。      晚绑定(late binding)指的是编译器或解释程序在运行前,不...
  • fjhfjhfjh123
  • fjhfjhfjh123
  • 2016年05月26日 12:28
  • 472

<为什么>要有virtual,及如何理解晚捆绑

下边要说的是我在语言学习过程中遇到一些不理解的问题,为什么要有virtual机制,还有什么是晚捆绑。我当时学到这的时候可能困惑了一段时间,后来经过继续学习测试等,得出了自己的结论,仅在这记录一下。没有...
  • github_24924857
  • github_24924857
  • 2015年04月20日 12:38
  • 320

winrar捆绑软件

常见的cpa静默包玩法通常是捆绑在某软件上,用户打开则一起运行(cpa静默包在后台运行安装),但是多数捆绑方法都会将捆绑后的软件报毒,而一般站长又都不会做免杀,就导致了通常静默包通常只用于捆绑一些本来...
  • shuxingcq
  • shuxingcq
  • 2017年03月15日 23:54
  • 240

Android--APK 捆绑器的实现

利用捆绑器向正常程序捆绑病毒、木马等恶意程序,以达到隐蔽安装、运行的目的,这 在 Windows 平台下是一种很常规的攻击手段。那么,在智能终端十分流行的今天,如何实 现针对手机应用的捆绑...
  • chaoyu168
  • chaoyu168
  • 2017年04月10日 17:04
  • 1407

如何将多个文件捆绑成一个可执行文件

如何将多个文件捆绑成一个可执行文件作者:未来工作室(Future Studio)徐景周 下载示例程序代码    将多个文件合并成一个最终可执行文件,运行这个最终文件时,就相当于运行...
  • usertony
  • usertony
  • 2013年10月25日 15:12
  • 961

早绑定和晚绑定

C++ 早绑定和晚绑定
  • My_heart_
  • My_heart_
  • 2016年06月22日 10:30
  • 2095

Android 下 APK 捆绑器的实现

Android 下 APK 捆绑器的实现                    作者: 海东青 利用捆绑器向正常程序捆绑病毒、木马等恶意程序,以达到隐蔽安装、运行的目的,这 在 Windows ...
  • nuobabijie730
  • nuobabijie730
  • 2016年10月12日 16:35
  • 542

[转载]刘光斗-刘晚苍系武学传人概况

刘光斗是北京著名武术名家张玉莲、唐兴福、王茂斋的高徒,尽得其真传,他集三位前辈老师的武艺于一身,功夫高超 刘光斗-刘晚苍系武学传人概况 ?? ?? 季培刚 (原文转自:http://www....
  • josonchen
  • josonchen
  • 2015年05月13日 21:28
  • 735

配置多链路捆绑PPP

是将多个物理链路合并或者捆绑成一个大逻辑链路的机制。 主要起到增加带宽,减少延时,线路备份的作用,另外一个作用是可以将不同类型的接口捆绑为一个逻辑接口。 多链路PPP常用于: 同步接口 异...
  • eydwyz
  • eydwyz
  • 2017年03月29日 13:46
  • 1018

易语言 文件捆绑机的原理【转载】

前段时间研究了一下文件捆绑,查了相关的资料,觉得这篇文章挺好的,而且看浏览过的人数也不多,应该没多少人看过吧,转给大家研究一下。          文章比较长,想学技术的建议耐心看完,好好理解,看完...
  • Exiaoyin
  • Exiaoyin
  • 2016年07月11日 16:23
  • 1057
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:晚捆绑的实现过程
举报原因:
原因补充:

(最多只允许输入30个字)