关于静态绑定与动态绑定的辨别笔记----C++学习之路
来源:互联网 发布:淘宝用的什么web服务器 编辑:程序博客网 时间:2024/06/09 18:09
1.从代码来看:
假设有继承关系:C->B->A
B b;A a = (A)b;a.vfunc1();a是一个A类型的对象,赋值转型后的b。
那么通过a来调用的虚函数vfunc1(),它是通过对象来访问的,静态绑定。在汇编里面就是call XXX
A* pa = new B;pa->vfunc1();从这里可以看到,通过一个指针pa来访问vfunc1(),满足第一个条件通过指针,第二个,访问虚函数,最后看向上转型
new出来的B,但是type是个A,那么就是向上转型。是动态绑定。
从底层编译器看到:call dword ptr [edx],这一句call后面的不再是一个固定的地址了。
(*(p->vptr)[n])(p);C语言下的。
动态绑定是继承与虚机制中的一种很特殊的东西。
阅读全文
0 0
- 关于静态绑定与动态绑定的辨别笔记----C++学习之路
- 学习笔记之 java的动态绑定与静态绑定
- 【Java学习笔记】继承,动态绑定与静态绑定
- Effective C++学习系列之静态绑定与动态绑定
- [C++]静态绑定与动态绑定
- C++的静态绑定与动态绑定
- java的动态绑定与静态绑定
- java的动态绑定与静态绑定
- java的动态绑定与静态绑定
- java的动态绑定与静态绑定
- java的动态绑定与静态绑定
- java的动态绑定与静态绑定
- c++的动态绑定与静态绑定
- java的动态绑定 与静态绑定
- java的动态绑定与静态绑定
- java的动态绑定与静态绑定
- java的动态绑定与静态绑定
- Java的动态绑定与静态绑定
- C++运算符重载(5) 重载== explicit避免隐式转换
- 仿百度联想搜索框
- 知识体系路线
- 在List的add方法添加对象时都是最后的一条记录的重复
- gulp基础使用
- 关于静态绑定与动态绑定的辨别笔记----C++学习之路
- C++学习笔记(二)
- 好书推荐
- GDB配置(打印STL容器、VS code配置、远程调试debug)
- Linux命令与shell脚本
- 【SQL解惑】谜题3:麻醉师谜题
- 语法分析-哈工大编译原理实验二
- 什么是闭包?闭包的工作原理、优缺点、使用场景和对页面的影响
- 子Div使用Float后如何撑开父Div