C++虚函数实现原理
来源:互联网 发布:花生壳使用自己的域名 编辑:程序博客网 时间:2024/06/15 20:38
1、多态的实现机制
C++在基类中声明一个带关键之Virtual的函数,这个函数叫虚函数;它可以在该基类的派生类中被重新定义并被赋予另外一种处理功能。通过指向指向派生类的基类指针或引用调用虚函数,编译器可以根据指向对象的类型在运行时决定调用的目标函数。这就实现了多态。
2、实例
3、底层机制
在每一个含有虚函数的类对象中,都含有一个VPTR,指向虚函数表。
派生类也会继承基类的虚函数,如果宅派生类中改写虚函数,虚函数表就会受到影响;表中元素所指向的地址不是基类的地址,而是派生类的函数地址。
当执行语句pBase->fun1()时,由于PBase指向的是派生类对象,于是就调用的Deriver::fun1()。
4、多重继承
如果一个类具有多个包含虚函数的父类,编译器会为它创建多个VIrtual table,每个virtual table中各个虚函数的顺序与相应的父类一样。
0 0
- 【C++】虚函数原理
- C++ 多态的实现原理--虚函数表
- 虚函数实现原理
- 虚函数实现原理
- 虚函数实现原理
- 虚函数实现原理
- 虚函数实现原理
- 虚函数实现原理
- 虚函数实现原理
- 虚函数实现原理
- 虚函数实现原理
- 虚函数实现原理
- 虚函数实现原理
- 虚函数实现原理
- C语言getbits函数原理及实现
- C语言可变参数函数实现原理
- C语言可变参数函数实现原理
- thinkphp C函数的实现原理
- 集训快结束
- 坚持#第17天~回忆重装系统
- Ftp上传类
- 三层架构-表格添加
- javascript 运算符
- C++虚函数实现原理
- Tomcat之安全
- LeetCode 3. Longest Substring Without Repeating Characters
- Android四大组件之Activity
- Android Handler异步消息处理机制一: 基础理解
- 问题汇总
- Java多线程系列--“基础篇”02之 常用的实现多线程的两种方式(r)
- 利用iptables 做端口转发
- 【Codeforces】-632B-Alice, Bob, Two Teams(模拟,思维)