码迷,mamicode.com
首页 > 编程语言 > 详细

C++ 多态机制浅析

时间:2014-08-10 15:50:10      阅读:273      评论:0      收藏:0      [点我收藏+]

标签:style   color   文件   ar   代码   new   c++   table   

编译时多态--函数重载

编译后生成的中间代码(如GCC生成的.o文件,此时还不是汇编语言)函数名字有变化,看下面两个例子。

void cc_show(const char*str)     ->    _Z7cc_showPKc

void cc_show(int x)            ->     _Z7cc_showi

大家可以看到,函数名其实不同,与返回值、函数名、参数有关。函数重载的规则就是参数的个数或种类必须不同,所以就不会有混乱了。

 

运行时多态--virtual动态绑定

编译器在编译的时候,会为含有虚函数的类/含有虚函数的类/为基类/的子类创建一个虚函数表(即virtual table),该表是一个一维数组,存放每个虚函数的地址。

那么如何定位虚表呢?编译器另外还为每个类的对象提供了一个虚表指针(即vptr),这个指针指向了对象所属类的虚表。在程序运行时,根据对象的类型去初始化vptr,从而让vptr正确的指向所属类的虚表,因此在调用虚函数时,就能够找到正确的函数。

C++ 多态机制浅析,布布扣,bubuko.com

C++ 多态机制浅析

标签:style   color   文件   ar   代码   new   c++   table   

原文地址:http://blog.csdn.net/chuchus/article/details/38469573

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!