c++中虚函数的实现机制?
2013-07-01 00:20
246 查看
c++中虚函数的实现机制?
表面现象:虚函数是在类中被声明为virtual的成员函数,当编译器看到通过指针或引用调用此类函数时,对其执行晚绑定,即通过指针(或引用)指向的类的类型信息来决定该函数是哪个类的。
实现机制:编译器对每个包含虚函数的类创建一个表(称为VTABLE)。在VTABLE中,编译器放置特定类的虚函数地址。在每个带有虚函数的类中,编译器置一指针,称为vpointer(缩写为VPTR),指向这个对象的VTABLE。通过基类指针做虚函数调用时(也就是做多态调用时),编译器静态地插入取得这个VPTR,并在VTABLE表中查找函数地址的代码,这样就能调用正确的函数使晚捆绑发生。
表面现象:虚函数是在类中被声明为virtual的成员函数,当编译器看到通过指针或引用调用此类函数时,对其执行晚绑定,即通过指针(或引用)指向的类的类型信息来决定该函数是哪个类的。
实现机制:编译器对每个包含虚函数的类创建一个表(称为VTABLE)。在VTABLE中,编译器放置特定类的虚函数地址。在每个带有虚函数的类中,编译器置一指针,称为vpointer(缩写为VPTR),指向这个对象的VTABLE。通过基类指针做虚函数调用时(也就是做多态调用时),编译器静态地插入取得这个VPTR,并在VTABLE表中查找函数地址的代码,这样就能调用正确的函数使晚捆绑发生。
相关文章推荐
- [转]浅析C++中虚函数的调用及对象的内部布局(利用汇编深刻理解C++虚函数底层实现机制)
- C++中虚函数功能的实现机制
- c++中虚函数的实现机制
- C++异常机制的实现方式和开销分析 (大图,编译器会为每个函数增加EHDL结构,组成一个单向链表,非常著名的“内存访问违例”出错对话框就是该机制的一种体现)
- 【高级】C++中虚函数机制的实现原理
- C++中虚函数的实现机制
- C++面向对象—成员函数与成员变量的实现机制学习笔记(1)
- C++内联函数跟普通函数的区别以及实现机制
- 在C++中类的对象作为函数形参在底层的实现机制
- 从内存模型的角度来看C++多态实现机制和C++析构函数为什么要用虚函数
- paip.函数方法回调机制跟java php python c++的实现
- C++中虚函数功能的实现机制
- paip.函数方法回调机制跟java php python c++的实现
- C++中虚函数功能的实现机制
- 虚函数C++中的虚函数的作用主要是实现了多态的机制
- [转]浅析C++中虚函数的调用及对象的内部布局(利用汇编深刻理解C++虚函数底层实现机制)
- (转)C++中虚函数功能的实现机制
- C++中的虚函数的作用主要是实现了多态的机制
- C++中虚函数功能的实现机制
- [C/C++]函数参数的入栈顺序与可变参数的实现